rsync претендует на разные файлы, но diff нет?

У меня есть файл как локально, так и на сервере. Сначала я попробую запустить rsync в режиме «сухой», чтобы узнать, есть ли какие-то различия между файлами:

 $ rsync -aP --dry-run USER@192.168.0.55:/home/dir . USER@192.168.0.55's password: receiving incremental file list dir/myfile.txt 

Это, по-видимому, означает, что файл dir/myfile.txt отличается, так как он будет обновлен. Затем я проверяю те же файлы с помощью diff :

 $ ssh USER@192.168.0.55 'cat /home/dir/myfile.txt' | diff --report-identical-files - dir/myfile.txt USER@192.168.0.55's password: Files - and dir/myfile.txt are identical 

Значит, файлы идентичны, по-видимому.

Почему тогда rsync хочет обновить этот файл – и как я могу подтвердить причину из командной строки?

2 Solutions collect form web for “rsync претендует на разные файлы, но diff нет?”

rsync сообщит об изменениях для

  • различия в разрешениях
  • временные метки
  • содержание (и размер файла)

В комментариях @roaima отметил, что есть возможность дать краткое изложение этих изменений на странице руководства rsync :

 -i, --itemize-changes output a change-summary for all updates 

Вы можете счесть это полезным, хотя краткое изложение краткое и (в имеющейся у меня версии) сообщает только тип (файл, ссылку или каталог) и имя . Вот что я вижу с rsync 3.0.9-4 и 3.1.1-3 на моем Debian 7 и тестовых машинах:

 cd+++++++++ backup-invisible-island/ >f+++++++++ backup-invisible-island/.bash_history cL+++++++++ backup-invisible-island/conf -> ../system/invisible-island.net/conf cL+++++++++ backup-invisible-island/statistics -> ../system/invisible-island.net/statistics cd+++++++++ backup-invisible-island/anon_ftp/ cL+++++++++ backup-invisible-island/anon_ftp/AdaCurses -> pub/AdaCurses cL+++++++++ backup-invisible-island/anon_ftp/DEBS -> pub/DEBS cL+++++++++ backup-invisible-island/anon_ftp/GIT -> pub/GIT 

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

rsync: показывать, когда новый файл в пункте назначения должен быть перезаписан

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

По умолчанию rsync решает, что два файла идентичны (и, таким образом, пропускают чтение их содержимого), если они имеют одинаковый размер и одну и ту же метку времени.

Наиболее распространенная причина, по которой два файла обрабатываются как разные, когда они идентичны, состоит в том, что они имеют одинаковое содержимое, но разные временные метки, поскольку файл был скопирован в прошлом, а метка времени на копии – это дата копии, а не временная метка исходного файла. Например, файл может быть скопирован с помощью scp без -p , с rsync без -p или -a , загруженным веб-браузером и т. Д.

Если временные метки отличаются друг от друга, то rsync необходимо синхронизировать файл так или иначе, поскольку вы сказали ему синхронизировать метаданные ( -a ). Таким образом, листинг в rsync -n совершенно оправдан: rsync имеет работу. Синхронизация времени – это хорошая идея, потому что это единственный способ организовать, что будущие прогоны rsync будут знать, что делать нечего.

  • синхронизировать файлы рекурсивно между двумя папками, где файлы меньше 24 часов
  • rsync over ssh без ввода пароля каждый раз
  • rsync список каталогов с абсолютным путем в текстовом файле
  • Автоматическая приостановка rsync, если цель заполнена
  • Сломанная труба в моем rsync.sh
  • Приостановка rsync через скрипт bash?
  • «Трудносвязанные» части большого файла, в котором только небольшая часть изменилась
  • Как увидеть общий прогресс при копировании файлов
  • Как rysnc работает над ssh?
  • rsync copy copy: dotfiles
  • rsync: исключая шаблон в файле exclude, не работает
  • Interesting Posts

    Проверка Visudo для всей экосистемы включенных файлов?

    Как сделать первичную запись linux для символов libc и libstdc ++?

    которые и не работают, чтобы найти путь ruby.exe

    Сравнение и расширение брекетов

    Debian (jessie) с XFCE, сеансами и запуском: приложение Autostart

    Помогите мне понять сложную подстановку команд с помощью {} и нескольких `\ ls`

    хромированные вопросы с монетным двором 17

    Сервер Openssh: фатальный: слишком много сокетов для прослушивания. Увеличить MAX_LISTEN_SOCKS

    Как перенести файл из окон на Unix-машину

    Как GRUB определяет корневой раздел Linux, который он передает в ядро ​​с «root =»?

    / usr / bin / kde-print-queue требует прав sudo – как разрешить нормальное использование принтера приостановки?

    Можно ли заменить </ sys: String> командой sed?

    logrotate не работает

    Могу ли я превратить бродячую многомашинную VM в зависимость от другой?

    Не удается установить внешний USB-накопитель

    Linux и Unix - лучшая ОС в мире.