Мне нужна утилита для поиска файлов RAR, которые содержат дубликаты данных (то есть файлы в RAR, которые имеют одинаковые хэши, но могут иметь разные имена).

Я могу открыть RAR и увидеть, что CRC одинаковы, но я надеялся на более автоматизированный процесс, который бы работал массово (сотни файлов).

Хэширование общего RAR не поможет, потому что файл, содержащийся внутри, может иметь разные имена, или архив может быть сжат на разных уровнях.

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

Я бы предпочел бесплатную утилиту для Windows, но платная утилита или утилита для Linux была бы приемлемой.

1 ответ1

1

Возможно, вы могли бы заставить все это работать за один шаг, но может быть проще сделать что-то вроде этого (linux):

for i in *.rar ; do  unrar l $i | tail -n+8 | head -n-3 | awk -v val=$i '{ printf("\"%s\" \"%s\" \"%s\"\n",val,$1,$8)}' >> rarfiles; done

Это позволит просмотреть все файлы в текущем каталоге и вывести все файлы в rars в файл с именем rarfiles, выглядящий так:

"rar name" "filename" "crc" 

Команды "head" и "tail" просто удаляют верхний и нижний колонтитулы с вывода unrar. Затем awk извлекает первое и восьмое поля, $ i (имя файла rar) передается в качестве параметра через -v, поэтому мы можем напечатать его с выводом.

затем

 cat rarfiles | sort -k3,3 | uniq -D -f2

Это покажет обманщиков. Параметры сортировки говорят, что третье поле (crc) должно быть отсортировано, а uniq -D говорит, что отображаются только дубликаты строк, игнорируя первые два поля (так что пропускаются "rar name" и "filename", поэтому отображаются только дуплексы, имеющие тот же CRC.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .