温馨提示×

centos怎么恢复hdfs文件

小樊
43
2026-08-20 05:50:28
栏目: 智能运维

CentOS 上恢复 HDFS 文件,取决于你删除方式集群配置。下面按常见场景给你一套完整思路(从简单到复杂)。


一、先确认删除方式(非常关键)

1️⃣ 是否启用了 HDFS 回收站(Trash)

如果启用了回收站,90% 可以直接恢复

检查配置:

hdfs getconf -confKey fs.trash.interval
  • 返回值 > 0:✅ 回收站已启用
  • 返回 0:❌ 未启用(只能靠快照或备份)

二、从 HDFS 回收站恢复(最常见)

1️⃣ 查看回收站目录

hdfs dfs -ls /user/<username>/.Trash/Current

或(root 用户):

hdfs dfs -ls /user/root/.Trash/Current

2️⃣ 查找被删除的文件

hdfs dfs -ls -R /user/<username>/.Trash/Current | grep 文件名

3️⃣ 恢复文件

hdfs dfs -cp /user/<username>/.Trash/Current/原路径/文件名 /目标路径/

✅ 恢复完成

⚠️ 注意:

  • 回收站默认 保留 1 天(1440 分钟)
  • 超过时间会被自动清理

三、如果回收站没启用(fs.trash.interval=0)

方案 1:HDFS 快照(Snapshot)恢复(推荐)

1️⃣ 查看是否有快照

hdfs dfs -ls /path/to/dir/.snapshot

2️⃣ 从快照中恢复

hdfs dfs -cp /path/to/dir/.snapshot/snapshot_name/文件名 /目标路径/

✅ 前提:

  • 删除前 已开启快照
  • 目录允许创建快照

方案 2:从 HDFS 备份恢复(distcp / 冷备)

如果你有:

  • 定期 distcp 备份
  • 或 HDFS → 本地 / OSS / S3 备份

恢复示例:

hdfs dfs -copyFromLocal 本地备份路径 /hdfs/目标路径

四、极端情况(无回收站、无快照、无备份)

❌ 结论

HDFS 删除后无法像本地文件系统那样 undelete

只能尝试:

1️⃣ NameNode 元数据恢复(高风险)

  • 停止集群
  • 恢复旧 fsimage + edits
  • 回滚 NameNode

⚠️ 不推荐生产环境自行操作


五、CentOS 上的常用排查命令

# 查看 hdfs 命令
which hdfs

# 查看 namenode 日志
tail -f /var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log

# 搜索删除记录
grep "delete" /var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log

六、防止以后再丢文件(建议)

✅ 开启回收站(所有节点):

<property>
  <name>fs.trash.interval</name>
  <value>1440</value>
</property>

✅ 开启 HDFS 快照:

hdfs dfsadmin -allowSnapshot /data
hdfs dfs -createSnapshot /data snapshot_2026

七、快速判断表(你可以对照)

情况 是否可恢复
回收站启用 ✅ 可恢复
有快照 ✅ 可恢复
有备份 ✅ 可恢复
都没有 ❌ 基本不可恢复

如果你愿意,可以告诉我:

  • 文件是怎么删的(hdfs dfs -rm / rm -r / 程序删除)
  • 是否启用了回收站
  • Hadoop 版本

我可以给你精确到命令级别的恢复方案 ✅

0