Я использую следующую команду rsync, чтобы определить все файлы, которые являются более новыми (или отличаются по контрольной сумме) в моем исходном каталоге, или не существуют в целевом каталоге:
rsync -rltDO -hvinuczz /source/ /dest
и -i
чтобы узнать точную причину, по которой файл будет передан / обновлен.
Я опускаю dir-times (-O
), поскольку в месте назначения есть обновленные каталоги, которые будут отображаться в выходных данных, генерируемых rsync.
Проблема, с которой я столкнулся с этой командой: она перечисляет новые (то есть, не существующие в исходном) файлы в месте назначения, например, так: >f+++++++++
.
Итак, мои вопросы:
(1) Почему -i
перечисляет их вообще? Мои параметры четко указывают, что я хочу синхронизировать источник с местом назначения, все содержимое, которое является более новым (или имеет другую контрольную сумму) в источнике. Файлы, существующие в месте назначения, но не в источнике, не попадают в эту категорию.
(2) Какие опции достигаются: Перечислите что-нибудь в источнике, которое либо не существует в месте назначения, либо существует и является более новым (или имеет контрольную сумму diff) в источнике?
Обратите внимание, что man rsync описывает -i
так:
-i
,--itemize-changes
Запрашивает простой подробный список изменений, которые вносятся в каждый файл, включая изменения атрибутов. Это точно так же, как указание --out-format = '% i% n% L'. Если вы повторите этот параметр, то также будут выведены неизмененные файлы, но только если принимающий rsync имеет версию не ниже 2.6.7 (вы можете использовать -vv с более старыми версиями rsync, но это также включает вывод других подробных сообщений),
Выход «% i» имеет загадочный вывод длиной 11 букв. Общий формат подобен строке YXcstpoguax , где Y заменяется типом выполняемого обновления, X заменяется типом файла, а другие буквы представляют атрибуты, которые могут выводиться, если они изменяются.
Типы обновлений, которые заменяют Y , следующие:
- < Означает, что файл передается на удаленный хост (отправлено).
- A > означает, что файл передается на локальный хост (получен).
- ︙
Итак >f+++++++++
говорит мне, что есть новый файл для передачи - и если я интерпретирую документацию, он должен быть получен на локальном конце (== источник). В самом деле?