3

Поэтому сейчас я использую rsync для синхронизации файлов с сервером. Иногда файлы на сервере удаляются (я знаю о параметре --delete и не использую его), и эти файлы остаются в моем локальном каталоге для последующей очистки.

К сожалению, для этого требуется, чтобы я поднял список файлов на сервере, выяснил, какие файлы больше не находятся на сервере, и переместил их в другой локальный каталог.

Я хочу как-то автоматизировать этот процесс. Я не знаю, существует ли такая опция в rsync, но я бы согласился на что угодно, если бы это автоматизировало эту повторяющуюся задачу.

Кто-нибудь знает, как это можно сделать?

2 ответа2

3

Я понял это самостоятельно. Решение состоит в том, чтобы смонтировать каталог SFTP с сервера в локальный каталог, используя sshfs а затем использовать diff . Для тех, кто хочет использовать этот обходной путь, вы можете найти направления здесь: http://blog.damontimm.com/how-to-mount-a-sftp-folder-ssh-ftp-on-ubuntu-linux-using-sshfs- fuse/ и здесь: http://linuxcommando.blogspot.com/2008/05/compare-directories-using-diff-in-linux.html Просто не забудьте использовать опцию -o allow_other с sshfs, иначе вы будете иметь проблемы с разрешением файлов.

2

Я нашел возможное решение, но вы должны запустить rsync два раза.

При первом запуске скопируйте новые и измененные файлы, например:

rsync -xav source/ dest/

Во втором запуске удалите и переместите файлы:

rsync --delete --backup --backup-dir=DIR_DELETED_FILES -xav source/ dest/

Обратите внимание, что --backup-dir может быть абсолютным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .