温馨提示×

centos怎样回收重复数据

小樊
43
2025-12-03 20:37:15
栏目: 智能运维

在 CentOS 上清理重复数据的实用方法

一、工具选择与安装

  • fdupes:按内容识别重复,先比大小、再比部分/完整 MD5,最后逐字节校验;支持交互删除、保留首个、以及将重复项替换为硬链接/软链接。在 CentOS/RHEL 上先启用 EPEL 仓库后安装:sudo yum install epel-release && sudo yum install fdupes(或 dnf)。
  • rdfind:同样基于内容,自动判定“原始”与“重复”,可生成报告、替换为硬链接/软链接或直接删除重复项。安装:sudo yum install epel-release && sudo yum install rdfind。
  • FSlint:图形与命令行兼具的“文件清理套件”,包含重复文件查找等工具。安装:sudo yum install epel-release && sudo yum install fslint。

二、使用 fdupes 查找与清理

  • 扫描目录(递归):fdupes -r /path
  • 仅列出并统计:fdupes -r -S -m /path
  • 交互式删除(每组保留一个):fdupes -r -d /path
  • 自动保留首个并删除其余:fdupes -r -d -N /path
  • 删除前先“演练”不改动:fdupes -r -d -N --dryrun /path
  • 将重复项替换为硬链接(保留一份真实数据):fdupes -r -H /path
  • 将重复项替换为软链接:fdupes -r -s /path
  • 常用过滤:忽略空文件 -n,忽略隐藏文件 -A。

三、使用 rdfind 查找与清理

  • 扫描并生成报告:rdfind /path(结果写入当前目录 results.txt
  • 演练模式:rdfind -dryrun true /path
  • 删除重复文件:rdfind -deleteduplicates true /path
  • 用硬链接去重:rdfind -makehardlinks true /path
  • 用软链接去重:rdfind -makesymlinks true /path
  • 忽略空文件:rdfind -ignoreempty true /path

四、不装软件的脚本方案与注意事项

  • 基于 MD5 的查找与“先移后审”脚本思路:
    1. 生成文件清单与校验和:find “$DIR” -type f -print0 | sort -z | xargs -0 md5sum > /tmp/md5sums.txt
    2. 找出重复校验和并移动重复项到临时目录:
      awk ‘{print $1}’ /tmp/md5sums.txt | sort | uniq -d | while read -r md5; do
      grep “^$md5” /tmp/md5sums.txt | cut -d’ ’ -f2- | tail -n +2 | xargs -I{} mv “{}” ~/temp_duplicates/
      done
    3. 复核无误后再删除临时目录。
  • 安全要点:
    • 操作前先做全量备份;优先在非生产环境验证命令。
    • 对数据库、虚拟机镜像、容器镜像等专有格式文件,仅靠哈希可能误判,建议用专用工具或先小范围演练。
    • 删除或替换前确认保留策略(如保留最新/最完整/指定目录)。
    • 删除后若空间未释放,排查是否有进程仍占用该文件(如 lsof | grep deleted),必要时重启相关进程。

0