По умолчанию rsync сравнивает только метаданные файла.
rsync -n -a -i --delete source/ target/
объяснение:
-n
на самом деле не копировать и не удалять <- ЭТО ВАЖНО !! 1
-a
сравнить все метаданные файла, такие как отметка времени и атрибуты
-i
печатать одну строку информации на файл
--delete
также файлы отчетов, которых нет в источнике
примечание: важно добавлять имена каталогов через косую черту. это rsync вещь.
если вы также хотите увидеть строки, напечатанные для идентичных файлов, укажите -i
дважды
rsync -n -a -ii --delete source/ target/
пример вывода:
*deleting removedfile (file in target but not in source)
.d..t...... ./ (directory with different timestamp)
>f.st...... modifiedfile (file with different size and timestamp)
>f+++++++++ newfile (file in source but not in target)
.f samefile (file that has same metadata. only with -ii)
помните, что rsync сравнивает только метаданные. это означает, что если содержимое файла изменилось, но метаданные остались прежними, то rsync сообщит, что файл такой же. это маловероятный сценарий. так что либо полагайте, что когда метаданные одинаковы, то данные одинаковы, либо вам нужно сравнивать данные файла по крупицам.
Бонус: для получения информации о прогрессе см. здесь: Оцените время или работу, оставшуюся до завершения rsync?
source/
аtarget/
также оба очень важны! (Без них вы будете сравнивать имена исходных и целевых каталогов с именами дочерних файлов, поэтому все имена файлов будут отличаться.)*deleting
, как файлы, находящиеся только в исходном коде. Косые черты легко забыть случайно, и тогда вы получите правдоподобный, но неправильный вывод.Используйте
-q
(--brief
опция) сdiff -r
(diff -qr
). Соinfo
страницы для GNUdiff
:Это будет сравнивать не построчно, а файл в целом, что значительно ускоряет процессор (что вы ищете).
источник
Вот быстрый скрипт на python, который проверит, что имена файлов, mtimes и размеры файлов одинаковы:
источник
Если вам нужно только узнать, отличаются ли файлы из двух ветвей файловой системы (не заглядывая внутрь файлов), вы можете сделать что-то вроде этого:
НТН
источник
Основанный на сценарии Криса Дауна, этот сценарий немного более «визуален». Назвав его с двумя аргументами
folder1
иfolder2
, он проходит первую папку и для каждого файла ищет соответствующий файл во второй папке. Если он найден, относительный путь печатается зеленым цветом, если они имеют различное измененное время или размер, он печатается желтым цветом, а если он не найден, то печатается красным.Обратите внимание , что это не достаточно , чтобы решить , следует ли две папки такие же, вам нужно будет запустить его в обоих направлениях , чтобы убедиться. На практике, если вы просто хотите узнать , одинаковы ли папки , тогда сценарий Криса лучше. Если вы хотите узнать, что отсутствует или отличается от одной папки к другой , то мой скрипт скажет вам.
ПРИМЕЧАНИЕ: вам понадобится установить termcolor
pip install termcolor
.источник
Если вы хотите сравнить только структуру и некоторую базовую информацию о файлах, вы можете попробовать что-то вроде этого:
Я не проверял это, поэтому любые изменения приветствуются :)
источник
<()
своя среда. Ред.