查找文件重复项并将其转换为链接 [WINDOWS]

查找文件重复项并将其转换为链接 [WINDOWS]

我的用户倾向于保存大量重复文件,这会占用越来越多的空间并产生硬件和归档成本。

我正在考虑创建一些计划作业,以便:

  1. 查找重复文件(检查文件 MD5 总数,而不仅仅是文件名/大小)
  2. 仅保留 1 个原始文件
  3. 通过文件链接(快捷方式)替换其他冗余副本(指向上方)

知道如何存档吗?

脚本/工具/提示?

编辑2021.10.28

我同时发现了 findDupe: https://www.sentex.ca/~mwandel/finddupe/

它允许创建到原始文件的硬链接。我试过了 - 它正确显示了重复的内容,似乎创建了硬链接 - 但是......毕竟我看不到硬盘使用情况统计数据的差异

为什么会这样?是不是因为 Windows 错误地计算了可用空间?

答案1

我用 python 编写了一个小脚本来满足您的需求。

它用于fdupes -r <dir>获取所有重复文件(即使名称不同)。之后,它会遍历输出并删除重复文件,然后创建符号链接。

我让你取消注释这两os.system()行以便启用修改。

也许您想要将参数传递给该脚本(如路径或其他),我让您搜索这个需求:)

import os

root_dir='/home/user/directory'

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

if(blocks_of_dup_files[-1] == '') :
    blocks_of_dup_files.pop()


for files in blocks_of_dup_files:
    files = files.split('\n')
    keeped_file = files.pop()
    for file in files:
        print('rm -f ' + file)
        print('ln -s ' + keeped_file + ' ' + file)

        #os.system('rm -f ' + file)
        #os.system('ln -s ' + keeped_file + ' ' + file)

答案2

对于 Windows,我创作了https://github.com/Caspeco/BlobBackup/tree/master/DuplicateFinder

您需要 Visual Studio 来编译代码。请注意,如果链接中的一个“文件”被修改,则所有文件都会被修改(或者说,只有一个文件)。这可能是用户不想要的行为。

相关内容