让电脑重复文件使用同一个文件其他重复文件删除

Windows 11下有没有这样的软件可以自动检测重复文件节省电脑存储空间

比如微信qq下载下来的文件自动处理,节省空间

主要是了解到了手机上华为的”超空间存储压缩“就想着电脑上有没有类似的东西

试试 Windows 的软链接吧。

在 Windows 中,您可以创建软链接(也称为符号链接)来链接到另一个文件或目录。以下是如何操作的步骤:

  1. 打开命令提示符:点击“开始”按钮,然后在搜索框中输入“cmd”并按 Enter 键。

  2. 导航到您想要创建软链接的目录。例如,如果您想在桌面上创建一个链接,您可以输入以下命令并按 Enter 键:cd Desktop

  3. 创建软链接。在命令提示符中,输入以下命令并按 Enter 键:mklink /D Link Target。在这里,“Link”是您想要创建的链接的名称,“Target”是您要链接到的文件或目录的路径。

例如,如果您想在桌面上创建一个链接到 C:\Program Files 的链接,您可以输入以下命令:mklink /D "My Link" "C:\Program Files"

注意:创建软链接需要管理员权限。如果您在创建软链接时遇到问题,尝试以管理员身份运行命令提示符。


其他系统可以搜索 ln 指令。

硬链接更合适吧。

安装Link Shell Extension,可以在右键菜单中创建文件的软链接和硬链接。Link Shell Extension

1 Like

可能要看不同软件的支持情况。软链接对一些软件来说有问题 。


硬链接和软链接是两种不同类型的文件系统链接。

硬链接:硬链接是指向文件的数据的指针,而不是文件的路径。硬链接在任何地方都可以创建,只要它们在同一个文件系统中。每个文件至少有一个硬链接,即文件本身。硬链接的一个重要特性是它们都有相同的 inode 号码,这是因为它们都指向相同的数据。硬链接的一个限制是它们不能跨文件系统。

软链接:又称为符号链接或符号引用,它包含了指向另一个文件的路径。它们可以跨文件系统,因为它们指向的是路径,而不是实际的数据。软链接可以链接到目录,也可以链接到不存在的文件(这被称为悬挂链接)。如果你删除了一个软链接指向的文件,软链接将会失效。

简单来说,硬链接是对文件数据的直接链接,而软链接则是对文件路径的链接。

如果是Windows的话,能稳定使用并且一直在维护的应该只有Windows Server了。Windows Server 2012之后的Windows服务器系统支持对NTFS与ReFS的子文件/块级重复数据删除。第三方软件有OpenDedup(但是官网下载链接都404且Github上几年不更新了反正我不敢用),其它第三方软件一般仅支持数据备份。

还有的方法就是文件链接了。不过需要注意的是,软链接和硬链接本身不支持写入时复制,一般用于在只读情况下共享文件,在某文件被多个程序需要且的情况下需谨慎使用(否则一个文件被改掉依赖它的其它程序可能都会挂掉)

如果是Linux的话,ZFS、Btrfs、XFS都支持重复数据删除。

找到了,无论硬链接还是软链接都要注意这个问题

检测重复文件,这个很多工具都可以完成,但困难的地方是,如何“节省”空间。
换句话说,现在检测出了A/B两个文件是重复文件,你决定如何节省空间呢?是删除A还是删除B?还是采用什么其他方式?这个问题非常主观,软件工具代替不了,只能由用户来自行决定。
当然,如果问题具体到了微信,我记得是有现成的工具来自动处理重复文件的,在论坛或者百度搜索一下即可。

2 Likes

确实是,都找不到人交流,也不知是不是用沙盘的人少了。

小心因为数据竞争把程序整挂了,节省空间最安全的是系统级别的透明压缩,比如btrfs。

查重可以用voidtools的everything,搜索 sizedupe:,按文件大小排序,瞬间就能找出电脑上重复的大文件,
不过它只是严格对比文件大小,不做hashing
论清理大文件everything可以排第一

另一个工具是DigitalVolcano的duplicate cleaner,
使用的是传统搜索,比较慢,但是选项很丰富,可以对比hash

这个操作我认为存在严重的隐患。因为A文件到底存在哪里是未知的。如果工具自动把BCDEF都删除,只保留指向A的链接,那么一旦A因为某种原因也被删除了(例如A恰好保存在临时文件夹中,或者用户不经意删除某个文件夹),那么整个文档就全都消失无踪了。
所以我强调的是,除非是类似于微信这样的存储位置、规则都非常确定的情况,否则如何处理重复文件,必须是要用户自定制定规则的,软件工具无法提供“全自动”替代。

我早上刚看到少数派一个文章,关于文件整理的,说重复文件可以用 mklink 命令进行链接,我还想去查查这个命令怎么用呢 :joy:

硬链接应该可以避免这个问题吧,只有当所有指向这个文件的指针都删除了,这个文件才真正被删除。

啥链接也避免不了工具软件先自动删除所有相同文件只保留唯一真实文件,用户再不经意删掉唯一真实文件而导致的所有文件全部阵亡的惨剧!

换句话说,我的核心观点还是,如何处理重复文件,必须要由用户来做决定或者提前制定好策略,而不能由工具软件“完全自动”的处理。

1 Like

那就是工具有问题,删除而不是替换为硬链接,楼主的问题是“使用同一个文件”,BCD位置删除了就不能正常使用了,替换为硬链接可以正常使用。

我也觉得这个工具很棒,可惜用到的少,也就没有续费。

可以试试czkawka,免费且去重方式有hash和同名

看你们讨论硬链接,我提醒一下:

硬链接的文件,改了一边,另外一边也会自动改。这通常是不可接收的。

比如你的自动备份工具备份出两份文件,防止文件内容被修改后丢失。现在倒好,你又同时修改了两份文件。这个备份软件就失效了。

再比如,git 软件会把修改后的文件复制到 .git 内部。使用硬链接也会出现严重的问题。导致 git 仓库损坏。

唯一完美的解决方案是 Copy On Write 技术,但只有 refs, btrfs, zfs, xfs 才支持。ntfs 和 ext4 都是上个时代的产物,目前都不支持。

你是怕查重软件把备份文件替换成硬链接?不然没有人会用硬链接去备份吧?
硬链接有个限制因素,就是只能在同一卷生效,也就说备份到其他盘就行了,而一般不会在同一个分区里备份吧?所以我觉得这个问题不用担心。

1 Like

感谢推荐,一个小遗憾是GUI不是原生,而是基于GTK,不过好在体积不大。