Я собираюсь отправиться в путешествие по программированию, которое, несомненно, закончится неудачей и / или пробросит мою мышь через мой Mac, но это интересная проблема.
Я хочу создать приложение, которое сканирует, начиная с некоторого базового каталога, и рекурсивно просматривает каждый файл, и, если оно находит точный дубликат файла, оно удаляет его и создает вместо него символическую ссылку. В основном бедняк дедупликация. Это на самом деле решает реальную проблему для меня, так как на моем Mac есть куча дубликатов файлов, и мне нужно освободить место на диске.
Из того, что я прочитал, это стратегия:
Выполните рекурсивный цикл и создайте хэш для каждого файла. Хеш должен быть чрезвычайно уникальным. Это первая проблема. Какой хеш я должен использовать? Как мне запустить все двоичное содержимое каждого файла через этот магический хеш?
Сохраняет хэш и полный путь каждого файла в хранилище ключей / значений. Я думаю, что Redis отлично подходит из-за своей скорости.
Итерация по хранилищу ключей / значений, поиск дубликатов хешей, удаление дубликата файла, создание символической ссылки и пометка строки в хранилище ключей / значений как копии.
Поэтому мои вопросы:
- Какой алгоритм хеширования я должен использовать для каждого файла? Как это сделать?
- Я думаю об использовании node.js, потому что узел, как правило, работает быстро при вводе-выводе Проблема в том, что узел сосет при загрузке процессора, поэтому хэширование, вероятно, станет узким местом.
- Какие еще ошибки мне здесь не хватает?