Резервное копирование удаленного каталога с двойственностью
Можно ли сделать резервную копию удаленного каталога по локальному пути?
Использование двух 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/
Обратите внимание на двойной // после хоста: порт