Пользовательский инструмент слияния каталогов / папок
Я думаю о разработке обычного инструмента слияния каталогов / папок как части обучения функциональному программированию, а также для устранения очень личного зуда.
Я обычно работаю на трех разных компьютерах и собираю множество файлов (текст, видео, аудио) локально, а затем тщательно объединяю их для целей резервного копирования. Я почти уверен, что у меня есть дуплисы и ненужные файлы, которые тратятся впустую. Я перехожу к облачному резервному копированию в качестве вторичного источника резервного копирования, и я хочу сэкономить как можно больше места за счет устранения избыточных файлов.
У меня сложная глубоко вложенная структура каталогов, и мне нужен автоматизированный инструмент, который автоматически проходит по дереву папок и выполняет слияние. Другая проблема заключается в том, что я использую сочетание Linux и Windows, и во многих моих файлах есть пробелы в имени...
Первоначально я думал, что мне нужно генерировать хэши для каждого файла и сравнивать их с использованием хешей, а не имен файлов (пробелы в имени папки, а также содержимое файлов могут различаться в зависимости от источника и цели). Является ли RIPEMD-160 хорошим балансом между производительностью и предотвращением столкновений? или достаточно SHA-1? SHA-256/512 перебор?
Какая функциональная среда программирования поставляется с набором готовых библиотек для генерации этих хешей? Я склоняюсь к OCaml...
1 ответ
Проверьте синхронизатор файлов Unison.
Я сам им не пользуюсь, но слышал немало положительных отзывов. Это зрелое программное обеспечение, основанное на некоторой теоретической основе.
Также это написано на OCaml.