LINUX.ORG.RU
решено ФорумAdmin

Нужен простой способ рекурсивно сравнить две папки

 , ,


1

1

Есть папка и её копия на sftp хосте. Хочу по-быстрому рекурсивно сравнить их содержимое и убедиться, что копия полноценная. Файлов не особо много но они по большей части обьемные, это iso-образы и всякие инсталляторы.

Предлагаемые гуглом варианты в виде diff -qr и rsync -avcn похоже при сравнении занимаются какой-то излишней работой, и от этого скорость процесса становится зависимой от обьёма файлов, а не только от количества. Ради теста сравнил одну из подпапок, в которой помимо одного толстого образа лежали ещё 3 мелких файла, и этот процесс почему-то занял больше времени, чем если бы я бы вручную посмотрел свойства всех этих файлов.

Есть ли какой-то упрощённый способ? Меня бы устроила проверка расположения, имени и точного размера в байтах, даже на даты пофиг. Я могу конечно написать свой скрипт на Go, но должно же существовать решение попроще?)


похоже при сравнении занимаются какой-то излишней работой

Это называется проверка контрольных сумм

Меня бы устроила проверка расположения, имени и точного размера в байтах

Что ничего не скажет о полноценности копии. При одинаковом размере содержимое может быть абсолютно разным

router ★★★★★
()
Ответ на: комментарий от router

Что ничего не скажет о полноценности копии. При одинаковом размере содержимое может быть абсолютно разным

В данном случае абсолютно пофиг. Файлы эти никто точно не редактировал и не переименовывал. Потенциальная разница может быть только в том, что в исходнике появились файлы, которых ещё нет в копии.

STinger
() автор топика

Предлагаемые гуглом варианты в виде diff -qr и rsync -avcn …

rsync и так проверяет только размер и дату последнего изменения файла, ЕСЛИ не указано другое.

Флаг -c в rsync -avcn означает --checksum - вот он как раз и указывает rsync чтобы вместо быстрого сравнения только размера и дат, для сравнений использовались контрольные суммы из-за чего и замедление на больших файлах.

$ rsync --help
...
Options
--verbose, -v            increase verbosity
--info=FLAGS             fine-grained informational verbosity
--debug=FLAGS            fine-grained debug verbosity
--stderr=e|a|c           change stderr output mode (default: errors)
--quiet, -q              suppress non-error messages
--no-motd                suppress daemon-mode MOTD
--checksum, -c           skip based on checksum, not mod-time & size
....

Научитесь гуглить правильно, а еще лучше читать маны или хотя бы использовать --help.

manul91
()
Последнее исправление: manul91 (всего исправлений: 4)
Ответ на: комментарий от anonymous

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

15-20 лет назад слово «папка» на ЛОРе было словом-детектором того самого агрессивного «виндузятника, у которого палец к мыши прирос» (c) @gr_buza и который, что главное, не хочет учиться. Отсюда и фольклор уровня «мамку синхронизируй». С тех пор смысл забылся, а неприязнь осталась.

ТС к описанному персонажу никакого отношения не имеет. Он умеет гуглить и недогуглил совсем чуть-чуть. Ему помогли, проблема решена. Но нет, пришёл ты.

Да, я сам не люблю слово «папка» в этом контексте и обычно говорю «каталог» (адекватный перевод английского directory). Но к другим не придираюсь.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от anonymous

форум поддержки астры

Форум перенаправки в тп астры ты хотел сказать? Ну бывает.

То ли дело форум поддержки редхата. Но это другое, да.

anonymous
()
Ответ на: комментарий от anonymous

Скрипт на Питоне для рекурсивного сравнения содержимого двух папок.

«Скрипт рекурсивно поимённо сравнивает файлы из копии с файлами из оригинала. Сравнение на идентичность проводится путем расчёта и сверки MD5-хешей от файлов. Также можно включить построчное сравнение файлов.»
Это вариант сравнения «может повезет, а может и не повезет» у md5 в наличии коллизии. Но в приведенном вами случае все перебивает удав, вы ещё тяжелее что-то не могли предложить? Задача же изкаробочная решаемая без затягивания всяких удавов да ещё и скорее определенных версий, но вы решили накостылять свое неповторимое по причине того, что знаете только пистон.

anc ★★★★★
()
Ответ на: комментарий от anonymous

kde

Специально полез в Dolphin, чтобы проверить. Таки да, слово «папка» там встречается. :)))

// Я просто хоть и Старый Кедераст (c), Дельфином пользуюсь крайне редко, 90% моего домашнего файл-менеджмента это mc, оставшиеся 10% – Double Commander.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)