Назад | Перейти на главную страницу

rsync -c -i помечает одинаковые файлы как разные

Моя цель: учитывая список файлов на локальном сервере, показать любые отличия от файлов с одинаковым абсолютным путем на удаленном сервере; например сравните локальный /etc/init.d/apache с тем же файлом на удаленном сервере.

«Разница» для меня означает разную контрольную сумму. Меня не волнует время модификации файла. Я тоже не хочу синхронизировать файлы (пока); показывать только различия.

у меня есть rsync 3.0.6 как на локальном, так и на удаленном серверах, которые должны иметь возможность делать то, что я хочу. Однако он утверждает, что локальные и удаленные файлы, даже с идентичными контрольными суммами, все равно различны.

Вот командная строка:

$ rsync --dry-run -avi --checksum --files-from = / home / me / test.txt --rsync-path = "cd / && rsync" / me @ remote: /

где:

Бег cksum на /etc/init.d/apache на обоих серверах дает одинаковый результат. Файлы такие же.

Тем не мение, rsync вывод:

me@remote's password: 
building file list ... done
.d..t...... etc/
cd+++++++++ etc/init.d/
<f+++++++++ etc/init.d/apache

sent 93 bytes  received 21 bytes  20.73 bytes/sec
total size is 2374  speedup is 20.82 (DRY RUN)

Коды вывода (см. http://www.samba.org/ftp/rsync/rsync.html) означает, что rsync думает

Я не понимаю, как с параметром --checksum и файлами с одинаковыми контрольными суммами rsync должен думать, что они разные. (Я пробовал использовать другие файлы с одинаковым временем модификации, и эти файлы не помечены как разные.)

Я запустил это в / и убедился (AFAIK), что он запускается удаленно в /, поэтому даже относительные пути будут правильными.

Я запустил rsync с -avvvi для получения дополнительной информации об отладке, но не увидел ничего примечательного.

Мне любопытно:

Так как «-a» эквивалентно «-rlptgoD», тогда да, он все еще смотрит на время модификации («-t»).

Попробуйте заменить «-a» на «-rlpgoD» и посмотрите, как это пойдет.

это может быть проблема с разрешениями. есть ли у "me @ remote" разрешение на чтение /etc/init.d/apache на удаленном сервере?

вам может потребоваться использовать параметр --fake-super либо на удаленном rsync, либо на локальном rsync, либо на обоих.

каталог имеет разное время создания / изменения / доступа, владельцев или разрешения ... не используйте параметр -a и попробуйте просто -r

удачи