在编辑或修改配置文件或旧文件前,我经常会把它们备份到硬盘的某个地方,因此我如果意外地改错了这些文件,我可以从备份中恢复它们。但问题是如果我忘记清理备份文件,一段时间之后,我的磁盘会被这些大量重复文件填满 —— 我觉得要么是懒得清理这些旧文件,要么是担心可能会删掉重要文件。如果你们像我一样,在类 Unix 操作系统中,大量多版本的相同文件放在不同的备份目录,你可以使用下面的工具找到并删除重复文件。
提醒一句:
在删除重复文件的时请尽量小心。如果你不小心,也许会导致意外丢失数据。我建议你在使用这些工具的时候要特别注意。
在 Linux 中找到并删除重复文件
出于本指南的目的,我将讨论下面的三个工具:
- Rdfind
- Fdupes
- FSlint
这三个工具是自由开源的,且运行在大多数类 Unix 系统中。
1. Rdfind
Rdfind 意即 redundant data find(冗余数据查找),是一个通过访问目录和子目录来找出重复文件的自由开源的工具。它是基于文件内容而不是文件名来比较。Rdfind 使用排序算法来区分原始文件和重复文件。如果你有两个或者更多的相同文件,Rdfind 会很智能的找到原始文件并认定剩下的文件为重复文件。一旦找到副本文件,它会向你报告。你可以决定是删除还是使用硬链接或者符号(软)链接代替它们。
安装 Rdfind
Rdfind 存在于 AUR 中。因此,在基于 Arch 的系统中,你可以像下面一样使用任一如 Yay AUR 程序助手安装它。
$ yay -S rdfind
在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt-get install rdfind
在 Fedora 上:
$ sudo dnf install rdfind
在 RHEL、CentOS 上:
$ sudo yum install epel-release $ sudo yum install rdfind
用法
一旦安装完成,仅带上目录路径运行 Rdfind 命令就可以扫描重复文件。
$ rdfind ~/Downloads
正如你看到上面的截屏,Rdfind 命令将扫描 ~/Downloads 目录,并将结果存储到当前工作目录下一个名为 results.txt 的文件中。你可以在 results.txt 文件中看到可能是重复文件的名字。
$ cat results.txt # Automatically generated # duptype id depth size device inode priority name DUPTYPE_FIRST_OCCURRENCE 1469 8 9 2050 15864884 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test5.regex DUPTYPE_WITHIN_SAME_TREE -1469 8 9 2050 15864886 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test6.regex [...] DUPTYPE_FIRST_OCCURRENCE 13 0 403635 2050 15740257 1 /home/sk/Downloads/Hyperledger(1).pdf DUPTYPE_WITHIN_SAME_TREE -13 0 403635 2050 15741071 1 /home/sk/Downloads/Hyperledger.pdf # end of file
通过检查 results.txt 文件,你可以很容易的找到那些重复文件。如果愿意你可以手动的删除它们。
此外,你可在不修改其他事情情况下使用 -dryrun 选项找出所有重复文件,并在终端上输出汇总信息。
$ rdfind -dryrun true ~/Downloads
一旦找到重复文件,你可以使用硬链接或符号链接代替他们。
使用硬链接代替所有重复文件,运行:
$ rdfind -makehardlinks true ~/Downloads
使用符号链接/软链接代替所有重复文件,运行:
$ rdfind -makesymlinks true ~/Downloads
目录中有一些空文件,也许你想忽略他们,你可以像下面一样使用 -ignoreempty 选项:
$ rdfind -ignoreempty true ~/Downloads
如果你不再想要这些旧文件,删除重复文件,而不是使用硬链接或软链接代替它们。
删除重复文件,就运行:
$ rdfind -deleteduplicates true ~/Downloads
如果你不想忽略空文件,并且和所哟重复文件一起删除。运行:
$ rdfind -deleteduplicates true -ignoreempty false ~/Downloads
更多细节,参照帮助部分:
$ rdfind --help
手册页:
$ man rdfind
2. Fdupes
(编辑:ASP站长网)
|