温馨提示×

Linux系统如何清理重复文件

小樊
43
2025-10-08 16:41:41
栏目: 智能运维

Linux系统清理重复文件的常用方法

1. 使用fdupes工具(推荐新手)

fdupes是一款专门用于查找和删除重复文件的命令行工具,操作简单且功能全面。

  • 安装:根据发行版选择对应命令(Debian/Ubuntu用sudo apt install fdupes,CentOS/RHEL用sudo yum install fdupes,Fedora用sudo dnf install fdupes)。
  • 查找重复文件:使用fdupes -r /path/to/search递归搜索指定目录(-r表示递归子目录),命令会列出所有重复文件组。
  • 删除重复文件:添加-d(删除重复文件)和-N(仅显示文件名,不自动删除)选项,如fdupes -rdN /path/to/search,终端会提示每组重复文件的编号,输入对应编号即可删除副本(保留第一个文件)。
  • 自动化脚本:若需批量删除,可使用fdupes -r /path/to/search | sed '/./{N;N;d}' | xargs -I {} rm {}(谨慎使用,建议先测试-N选项)。

2. 使用find+md5sum命令(基础手动方法)

通过计算文件MD5哈希值(内容唯一标识)查找重复文件,适用于所有Linux系统。

  • 查找重复文件
    find /path/to/search -type f -exec md5sum {} + | sort | uniq -w 32 -d
    
    解释:find查找所有文件,md5sum计算哈希值,sort排序,uniq -w 32匹配前32位(MD5长度)相同的行(即重复文件),-d显示重复项。
  • 删除重复文件
    find /path/to/search -type f -print0 | xargs -0 md5sum | sort | uniq -w 32 -d | awk '{print $3}' | xargs rm -v
    
    解释:-print0xargs -0处理含空格的文件名,awk提取重复文件的路径,rm -v删除并显示操作结果(保留第一个文件)。

3. 使用rdupes工具(快速批量处理)

rdupes是fdupes的轻量级分支,专注于快速查找和删除重复文件。

  • 安装:与fdupes类似(Debian/Ubuntu用sudo apt install rdupes,CentOS/RHEL用sudo yum install rdupes,Fedora用sudo dnf install rdupes)。
  • 查找并删除:使用rdupes -r /path/to/search查找重复文件,添加-d(删除)和-N(确认)选项,如rdupes -rdN /path/to/search,终端会提示每组重复文件的编号,输入编号即可删除副本。

4. 使用rmlint工具(高性能场景)

rmlint针对大数据量设计,支持多线程加速和多种删除策略(如硬链接、删除)。

  • 安装sudo apt install rmlint(Debian/Ubuntu),或通过源码编译(git clone https://github.com/sahib/rmlint && cd rmlint && ./configure && make)。
  • 扫描与清理
    rmlint /path/to/search  # 扫描(默认使用SHA1)
    ./rmlint.sh -d          # 生成清理脚本(-d表示删除)
    ./rmlint.sh -do /backup # 预览(-do表示模拟运行,保留备份)
    ./rmlint.sh -d          # 执行清理
    
    解释:rmlint生成rmlint.sh脚本,-d选项执行删除,-L选项可用硬链接替代删除(节省空间)。

5. 图形界面工具:Czkawka(新手友好)

Czkawka提供直观的图形界面,适合不熟悉命令行的用户。

  • 安装:下载Linux版本(如.tar.gz),解压后运行./czkawka_gui
  • 操作流程
    1. 选择扫描类型(“重复文件”“大文件”等);
    2. 设置匹配精度(如“MD5哈希”“文件大小”);
    3. 预览结果(可按大小、路径排序);
    4. 自定义保留策略(如保留最新文件、最小文件);
    5. 批量移动/删除操作(支持回收站或直接删除)。

注意事项

  • 备份数据:清理前务必备份重要文件(如rsync -av /target /backup),防止误删。
  • 测试操作:使用-N(fdupes)、-i(fdupes交互模式)或-do(rmlint)选项预览结果,确认无误后再删除。
  • 排除系统目录:避免扫描系统关键目录(如/proc/sys/dev),可使用--exclude选项(如fdupes -r --exclude=/proc --exclude=/sys /)。

0