Получить файлы на удаленной копии, но не локально

Получить файлы на удаленной копии, но не локально

У меня есть папка.

У меня есть одна копия этой папки локально и одна на сервере. Я отредактировал свою локальную папку, как хотел, а затемrsyncего на сервер.

Есть ли способ сравнить эти две копии, локальную и удаленную, и получить список файлов, которые находятся на удаленной копии, но не на локальной?

решение1

Следующая команда rsync, выполненная на локальном компьютере, выводит список файлов, которые существуют на удаленном хосте, но не на локальном хосте.

rsync -av --dry-run --delete somedir/ user@remote:~/somedir/

Переключатель --dry-runтолько выводит список файлов, фактически ничего не делая, переключатель --deleteв сочетании с -v(verbose) выводит список файлов, которые будут удалены, поскольку они существуют на удаленном хосте, но не на локальном хосте, что вам и нужно.

решение2

Синхронизатор файлов Unisonделает именно это, используя алгоритм rsync для тяжелой работы. Я использую его ежедневно.

решение3

Если у вас уже есть ключи SSH для выполнения rsync, вы можете выполнить удаленную команду SSH и получить список файлов в каталоге, а затем сравнить его с копией из локального каталога.

ssh [email protected] ls -1 ~/foo > /tmp/remote.txt && ls -1 ~/foo > /tmp/local.txt && diff /tmp/remote.txt /tmp/local.txt

Дополнительный кредит, перенаправьте вывод diff вcolordiffдля красоты.

Связанный контент