Резервное копирование удаленного каталога с двойственностью

Можно ли сделать резервную копию удаленного каталога по локальному пути?

Использование двух URL в команде поднимает

Two URLs specified.  One argument should be a path.

Использование только одного для удаленного, но с указанием full вариант поднимает

--full option cannot be used when restoring or verifying

То, что я пробовал выглядит

duplicity full ssh://username@remote:XXXX/home/username /media/removabledrive/

с XXXX - это пользовательский порт для SSH.

4 ответа

Решение

Почему бы просто не смонтировать удаленный путь в дерево вашей локальной файловой системы, используя sshfs, cifs, nfs или другие средства по вашему выбору?

Если вы сделаете это, вы можете указать два локальных пути к дублированию, и он не должен заметить, что один из путей фактически находится на удаленном узле (убедитесь, что вы выбрали удаленную файловую систему, которая экспортирует такие атрибуты, как разрешения и т. Д., хочу, а также убедитесь, что вы используете правильные параметры монтирования - что особенно важно для samba / cifs, так как его значения по умолчанию не очень unix-ish).

Для Debian или производных Debian (например, Ubuntu):

apt-get установить sshfs

Затем:

mkdir -p / mnt / remote &&
sshfs username @ remote: / home / username / mnt / remote

После этого сделайте резервную копию из /mnt/remote на ваш локальный резервный путь, затем

umount / mnt / remote

Также проверьте man sshfs чтобы увидеть, какие параметры могут применяться к вашему варианту использования.

Duplicity не поддерживает удаленные источники, поэтому нет способа сделать это без трюков, подобных предложенным @blubberdiblub.

Это разочаровало меня, когда я обнаружил проблему, хотя они не называют ее проблемой: https://answers.launchpad.net/duplicity/+question/143932

Из того, что я понимаю, предоставление удаленного пути, сопровождаемого локальным путем, требует восстановления данных, которое по умолчанию должно быть полным восстановлением.

"Полный" параметр действителен только для создания резервных копий:

   full   Indicate full backup.  If this is set, perform full backup  even
          if signatures are available.

   incr   If  this  is  requested an incremental backup will be performed.
          Duplicity will abort if old signatures  cannot  be  found.   The
          default is to switch to full backup under these conditions.

Итак, эта команда: duplicity full /home/me scp://uid@other.host/some_dir создаст полную резервную копию / home / me для удаленного хоста /some_dir. Полный / incr относится только к созданию резервных копий, но не к восстановлению.

Если вы хотите восстановить только определенный путь, используйте:

--file-to-restore path Эта опция может быть задана в режиме восстановления, в результате чего восстанавливается только путь, а не все содержимое архива резервной копии. Путь должен быть указан относительно корня резервной копии каталога.

Согласно документации здесь: http://manpages.ubuntu.com/manpages/oneiric/man1/duplicity.1.html, происходит следующее:

При восстановлении дублирование применяет исправления по порядку, поэтому удаление, например, полного набора резервных копий может привести к невозможности использования связанных наборов инкрементных резервных копий.

Также последнее замечание по поводу части "ssh://". Попробуйте использовать scp / sftp, как указано в документации:

ЗАМЕЧАНИЕ ПО ПРОТОКОЛАМ SSH/SCP

   Duplicity specifies two protocol names for the same protocol.  This  is
   a  known  and  user-confusing issue.  Both use the same protocol suite,
   namely ssh through its' utility routines scp and sftp.  Older  versions
   of  duplicity used scp for get and put operations and sftp for list and
   delete  operations.   The  current  version  uses  sftp  for  all  four
   supported  operations, unless the --use-scp option is used to revert to
   old behavior.  The change was made to all-sftp in order  to  allow  the
   remote system to chroot the backup, thus providing better security.

Глядя на документацию здесь: http://duplicity.nongnu.org/docs.html Похоже, вы должны выдать это:

duplicity full ssh://username@remote:XXXX//home/username /media/removabledrive/

Обратите внимание на двойной // после хоста: порт

Другие вопросы по тегам