rsync сравнить каталоги?

Можно ли сравнить два каталога с rsync и распечатать только различия? Существует вариант с сухим пробегом, но когда я увеличиваю многословие до определенного уровня, отображается каждый сравниваемый файл.

ls -alR и diff здесь не вариант, поскольку в источнике есть жесткие ссылки, делающие каждую строку разной. (Конечно, я могу удалить этот столбец с помощью perl.)

4 Solutions collect form web for “rsync сравнить каталоги?”

Вам будет удобно запускать что-то вроде rsync -avun --delete в обоих направлениях.

Но чего вы на самом деле пытаетесь достичь?

Обновление :

rsync -avun --delete $TARGET $SOURCE |grep "^deleting " предоставит вам список файлов, которые не существуют в целевом каталоге.

«grep delete», потому что каждая строка печатает: delete ing ..file ..

rsync -avun $SOURCE $TARGET предоставит вам список «разных» файлов (включая новые файлы).

Чтобы добавить к ответу Нильса (для тех, кто сталкивается с этим через Google), по умолчанию rsync сравнивает только размеры файлов и время модификации, чтобы определить, есть ли какие-либо различия. (Если они разные, это делает больше, но если они одинаковые, это останавливается там.)

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

 rsync -avnc $SOURCE $TARGET 

(Параметр -u указывает rsync игнорировать файлы, которые новее в $TARGET чем на $SOURCE , которые, вероятно, вам не нужны, если вы сравниваете содержимое.)

Для тех, кто менее знаком с rsync :

 rsync -rvnc --delete ${SOURCE}/ ${DEST} 
  • -n : самый важный бит – ничего не меняйте;
  • -rc : сравнивать только содержимое (в противном случае использовать -ac );
  • -v : список файлов)
  • --delete : искать симметричную, а не однонаправленную разницу.

  • Наконец, / означает «заглянуть внутрь каталога и сравнить его содержимое с пунктом назначения».

PS. Я знаю, что это ужасный PS – но это действительно было добавлено в спешке. Тем не менее, я уверен, это может показаться полезным.

Я понимаю из вашего вопроса, что вы не хотите использовать diff для ls , но вы также можете использовать diff рекурсивно в каталогах:

 diff -rq DIR1 DIR2 
  • Соответствующие имена шаблонов rsync
  • Я пытаюсь скопировать файлы с сервера в мой локальный каталог с помощью rsync.I не хочу копировать файлы, которые были скопированы ранее и удалены
  • pipe ls и awk для rsync
  • Невозможно хорошо понять Rsync с включенными и исключающими шаблонами
  • rsync список каталогов с абсолютным путем в текстовом файле
  • Ошибка Rsync 23: некоторые файлы не были переданы при копировании файлов с диска Windows на внешний жесткий диск
  • Rsync вытащить из / home / * / в тот же каталог
  • Сброс соединения Rsync с помощью одноранговой сети
  • Как проверить, что rsync правильно копировал устройство, когда включены устройства копирования?
  • rsync рекурсивно с определенной глубиной подпапок
  • Как избежать создания корневой папки источника в получателе при использовании rsync?
  • Linux и Unix - лучшая ОС в мире.