Intereting Posts
Автоматизировать команду modprobe во время загрузки на Fedora Копирование файлов с несколькими расширениями Поиск файлов в порядке времени Базовый контроль заданий: остановка задания, добавление задания в стек и `fg` автозаполнение имен файлов с использованием compgen Выбор / Вставка Word-Wrap на терминалах X-Based как показать общий размер файлов в папке путем фильтрации расширения без отображения каждого размера файла python3 указывает на python2.7.6 Почему я не могу распаковать файлы .tar.bz2 или .tar.xz? Как печатать аргументы из известного элемента, пока неизвестный элемент массива с Bash Как мне разбить жесткий диск? Открытие PDF-файлов в существующем окне Удалите символ новой строки только для всех N строк проблема с тем, как недавно созданные пусковые установки гномов работают против пусковых установок, восстановленных после загрузки системы. (изменение названия для ясности) Какую ссылку я должен использовать для home- & owncloud-data?

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 хочет обновить этот файл – и как я могу подтвердить причину из командной строки?

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 будут знать, что делать нечего.