2015-02-20 3 views
2

Долгое время я делал резервные копии на двух внешних дисках. И эти диски сводят меня с ума.Команда UNIX: быстрее, чем diff

Хотя общая информация, хранящаяся на двух дисках, одинакова, их размер файла отличается от скрытых файлов (например, .DS_Store). До сих пор я использовал размер корневого каталога, чтобы убедиться, что эти две резервные копии одинаковы. Если оба корня указывают один и тот же размер в байтах, я могу быть уверен, что они одинаковы. Но скрытые файлы - это действительно боль в шее.

Я пытался использовать дифф, таким образом:

diff -rq -x '.*' dir1 dir2 

Но это невероятно медленно. Я прошу вас, ребята, помочь мне найти способ проверить, содержат ли две огромные каталоги одни и те же данные.

Моя идея - сделать некоторую рекурсивную команду, которая будет сравнивать только имена файлов + файлы. Это должно быть намного быстрее, чем diff, что фактически сравнивает каждый файл.

PS: Резервная копия имеет более 700 ГБ.

+0

Что вы думаете о 'diff <(cd dir1 && du -a [!.] * | sort -k2) <(cd dir2 && du - a [!.] * | sort -k2)? 'Просто написал это, но я не q uite уверен, что он на 100% прав, хотя он прошел несколько простых тестов. – Randolph

+0

'diff' может быть немного для того, что вы делаете. Если два файла отличаются друг от друга, он попытается выяснить, почему. Мой unix немного ржавый, но разве нет команды для сравнения файлов, например 'fcmp' или что-то еще? Если нет, должно быть довольно просто написать одно. –

ответ

0

Возможно, вам стоит рассмотреть возможность расчета контрольной суммы на обоих дисках и сравнить выход. это должно быть намного быстрее, чем diff, хотя для запуска потребуется некоторое время.

Try:

$ find -s somedir -not -path '*/\.*' -type f -exec md5sum {} \; | md5sum 

Вы можете видеть в команде считают, что скрытые файлы игнорируются.

Вы также можете подумать о способе расчета размера каталога без скрытых файлов.

Реферировано от: https://unix.stackexchange.com/questions/35832/how-do-i-get-the-md5-sum-of-a-directorys-contents-as-one-sum

0

Вы можете использовать rsync, чтобы показать вам, что отличается чем-то вдоль этих линий:

rsync -aHv --delete --dry-run dir1/ dir2/ 

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

Смежные вопросы