在 Linux 环境下使用 HDFS(Hadoop Distributed File System) 时,误删文件是否能恢复,取决于 是否开启了回收站(Trash)、是否有快照(Snapshot)、以及 是否还有数据块未被清理。下面按常见场景说明恢复方法。
HDFS 默认是 开启回收站 的(取决于配置)。
hdfs dfs -ls /user/<用户名>/.Trash/Current
或者:
hdfs dfs -ls /user/root/.Trash/Current
hdfs dfs -mv /user/root/.Trash/Current/误删路径 /目标路径
例如:
hdfs dfs -mv /user/root/.Trash/Current/data/test /data/test
由参数控制(默认 6 小时~数天):
fs.trash.interval
fs.trash.checkpoint.interval
如果文件已从 .Trash/Current 移动到 .Trash/<时间戳> 并过期,则无法恢复。
如果目录之前创建过快照:
hdfs dfs -ls /path/.snapshot
hdfs dfs -cp /path/.snapshot/snapshotName/文件名 /path/文件名
示例:
hdfs dfs -cp /data/.snapshot/s1/test.txt /data/test.txt
hdfs dfs -rm 后,NameNode 只是标记删除恢复方式(不推荐,风险高):
⚠️ 仅限专家操作,且极易失败
以下情况 基本无法恢复:
<property>
<name>fs.trash.interval</name>
<value>1440</value> <!-- 1天 -->
</property>
hdfs dfsadmin -allowSnapshot /data
hdfs dfs -createSnapshot /data s1
hdfs dfs -rm -skipTrash # 明确不想进回收站时才用
你可以先执行:
hdfs dfs -ls /user/$(whoami)/.Trash/Current
如果还能看到文件 → 可以恢复
如果为空 → 看是否有 .snapshot
都没有 → 基本无法恢复
如果你愿意,可以告诉我:
我可以帮你做 具体恢复步骤分析。