LINUX.ORG.RU

Посоветуйте быстрый хеш директории на современных цп

 , ,


0

1

Директории нужен номер или что-то подобное, без шифрования, без копий с разным номером.



Последнее исправление: naKovoNapalBaran (всего исправлений: 2)

Ответ на: комментарий от naKovoNapalBaran

так используйте модель хранения например дрова - в /дрова камни - в /камни

если дров и камней много - добавьте время )

не хотите палить - хешируйте, неважно чем, на скорость сильно не повлияет

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

Нужно устранить копии.

включая содержимое ? и файлы большие и много ??

подкаталоги+файлы сортировать по именам (если имена учитываются, иначе по размерам),считать самую быструю и короткую контрольную сумму какая только найдётся. crc32 по всему включая мета-данные (имя+размер+даты_если_важны+exif_для_картинок), содержимое полностью только для коротких файлов, для больших - первые N страниц+последние K

алг.crc можно и не выбирать - действительно crc32 как самый стандартный и повсеместно имеющийся. Арифметика рассчётов не будет тонким местом. Вот IO - да. Считать лучше в несколько потоков и возможно даже заходов (а вдруг какой файл поменятся пока считаете остальные ?)

потом уже, при совпадении CRC, уже делать окончательное и точное сравнение для выявления дубликатов.

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

Не нужно все учитывать, директории под моим контролем, хочу чтобы при изменении файла в директории менялся хеш всей директории.
Дата изменения файла не подходит.

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

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

рекурсия ненужна при рассчёте crc. образно - можно даже на bash: берёшь список вложенных от find, отдаёшь на несколько потоков счёта sort | crc, получаешь кортежи {inode_родителя inode_каталога имя_каталога crc_побыстрому} ;

два каталога подлежат детальному сравнению если: совпало crc, имена и crc непосредственно дочерних

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от naKovoNapalBaran

cksum - подсчёт КС. Вы её (или аналогичную) будете использовать во все поля при выявлении «дубликатов каталогов»

предложен просто метод её использования (с упором что считать в несколько потоков) и что рекурсии не сильно много, только чтоб получить список файлов а это find.

И выше по теме, что считать CRC всего файла не особо как надо. Заголовок+Хвост+МетаДанные. То есть в сумме данных немного, всё быстро

MKuznetsov ★★★★★
()