Есть ли способ заставить rsync напечатать полные пути к файлам для всех файлов, которые отличаются друг от друга, без фактической передачи каких-либо файлов?
В качестве альтернативы мне нужен способ разбить файлы по двум деревьям (по SSH), основываясь только на изменении размера или времени последнего изменения.
--dry-run
будут зависеть от того, как вы используете-v
и--progress options
- так что, если вы вообще ничего не выводите, проверьте, что эти опции установлены по мере необходимости. Я заметил, что он будет отправлять имена каталогов, даже если файлы не изменились, но вы можете отфильтровать их, пропустив выходные данныеsed
или аналогичные.Я предпочитаю использовать --out-формат, чтобы увидеть подробности, передавая его меньше:
источник
rsync -rvn localdir targetdir
-N означает показывать только действия (без каких-либо действий).
Обратите внимание, что вам нужна буква «v», иначе она вам ничего не покажет! (остальные ответы забывают об этом ...)
источник
Опираясь на другие ответы и /server//a/618740/114520
--dry-run
(или-n
), чтобы избежать модификации--itemize-changes
(или-i
) для поиска изменений--archive
(или-a
), чтобы получить все подкаталогиegrep
для фильтрации записей, начинающихся с точки (без изменений)Что дает вам:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\."
Если вам нужен только один способ, вы можете изменить команду:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|<)"
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|>)"
И если вам нужны только файлы, просто добавьте
awk
магию:rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\." | awk '{print $2}'
источник
Я бы пошел на что-то вроде этого:
Например:
источник
Правда заключается в том, что при запуске
rsync -v ...
и выводит имя файла на экран, то этот файл будет переносится (или был бы передан, если вы делаете --dry-бег). Чтобы выяснить, почему rsync собирался передать его, используйте режим детализации: /server//a/618740/27813Как отмечали другие, по умолчанию rsync сравнивает только размер файла и временную метку, которые должны совпадать, иначе в этом файле запускается «дельта-копия». Если вы действительно хотите увидеть, какие файлы отличаются, используйте режим контрольной суммы "-c".
источник