在 CentOS 上恢复 HDFS 文件,取决于你删除方式和集群配置。下面按常见场景给你一套完整思路(从简单到复杂)。
如果启用了回收站,90% 可以直接恢复。
检查配置:
hdfs getconf -confKey fs.trash.interval
hdfs dfs -ls /user/<username>/.Trash/Current
或(root 用户):
hdfs dfs -ls /user/root/.Trash/Current
hdfs dfs -ls -R /user/<username>/.Trash/Current | grep 文件名
hdfs dfs -cp /user/<username>/.Trash/Current/原路径/文件名 /目标路径/
✅ 恢复完成
⚠️ 注意:
hdfs dfs -ls /path/to/dir/.snapshot
hdfs dfs -cp /path/to/dir/.snapshot/snapshot_name/文件名 /目标路径/
✅ 前提:
如果你有:
distcp 备份恢复示例:
hdfs dfs -copyFromLocal 本地备份路径 /hdfs/目标路径
HDFS 删除后无法像本地文件系统那样 undelete
只能尝试:
fsimage + edits⚠️ 不推荐生产环境自行操作
# 查看 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 / 程序删除)我可以给你精确到命令级别的恢复方案 ✅