Рейтинг:-1

Найдите дубликаты файлов и преобразуйте их в ссылки [WINDOWS]

флаг gb

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

Я думаю создать какое-то запланированное задание, чтобы:

  1. найти дубликаты файлов (проверить сумму MD5 файла, а не только имя файла/размер)
  2. оставить только 1 исходный файл
  3. заменить другие лишние копии ссылкой (ярлыком) на файл (пункт выше)

Любая идея, как это заархивировать?

Скрипт/инструмент/советы?

РЕДАКТИРОВАТЬ 28.10.2021

Тем временем нашел findDupe: https://www.sentex.ca/~mwandel/finddupe/

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

Почему так? Может быть Windows неправильно считает свободное место?

Рейтинг:1
флаг in

Для Windows я автор https://github.com/Caspeco/BlobBackup/tree/master/DuplicateFinder

Вам понадобится визуальная студия для компиляции кода. Учтите, однако, что со ссылками, если модифицируется один "файл", то и все (точнее, только один файл). Это может быть нежелательным поведением для пользователей.

флаг gb
Спасибо, что поделились этим, я скомпилировал это, но я не могу найти информацию о параметрах строки cmd, о том, как это работает и т. д. Я быстро проверил, добавив один параметр (каталог для сканирования), он вернул: Дублирование сделано 4 элемента, пройденные в xxx - но нет ifo, если найдены дубликаты (есть некоторые), также нет информации о (жесткой) ссылке
флаг in
Он совпадает по размеру и контрольным суммам (тестируется только при обнаружении дубликатов), если файлы уже связаны, они «пропускаются», если обнаружены дубликаты, он напечатает их.
Рейтинг:1
флаг cn

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

Он использует fdupes -r <каталог> чтобы получить все дубликаты файлов (даже с разными именами). После этого он перебирает вывод и удаляет дубликаты файлов, а затем создает символическую ссылку.

Я позволю вам раскомментировать два ОС.система() строки для включения модификаций.

Возможно, вы захотите передать параметр этому скрипту (например, путь или что-то еще), я позволяю вам искать эту потребность :)

импорт ОС

root_dir='/дом/пользователь/каталог'

blocks_of_dup_files = os.popen('fdupes -r ' + root_dir).read().split('\n\n')

если(blocks_of_dup_files[-1] == '') :
    blocks_of_dup_files.pop()


для файлов в block_of_dup_files:
    файлы = файлы.split('\n')
    сохраненный_файл = файлы.pop()
    для файла в файлах:
        print('rm -f ' + файл)
        print('ln -s ' + сохраненный_файл + ' ' + файл)

        #os.system('rm -f ' + файл)
        #os.system('ln -s ' + keeped_file + ' ' + файл)

флаг gb
Спасибо. Кажется, ваше решение адресовано для Linux. Мне нужно что-то подобное для Windows (извините, я забыл упомянуть об этом в своем посте - исправил)
флаг gb
Хорошо, я обнаружил, что это можно установить в Windows - через Choco. попробую

Ответить или комментировать

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