在 Linux 上恢复 HDFS 误删文件,能否恢复主要取决于 是否开启了回收站(Trash) 以及 删除方式。下面按常见场景一步步说明。
HDFS 默认 可能未开启回收站,但很多集群会开启。
hdfs getconf -confKey fs.trash.interval
hdfs dfs -ls /user/<username>/.Trash/Current
或
hdfs dfs -ls /user/root/.Trash/Current
hdfs dfs -mv /user/root/.Trash/Current/path/to/file /original/path/
✅ 这是最安全、最推荐的方式
hdfs dfs -rm(不是 skipTrash)hdfs oiv 解析 fsimage⚠️ 复杂,一般不推荐手工做
hdfs dfs -ls /path/.snapshot
hdfs dfs -cp /path/.snapshot/snapshot_name/file /path/
✅ 如果你之前建过 snapshot,这是最稳的
适用于:
find /dfs/dn/current -name "blk_*"
put 到 HDFS⚠️ 成功率低,不保证完整
如果有:
直接恢复即可。
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
hdfs dfs -rm file
# 不要用
hdfs dfs -rm -skipTrash file
hdfs dfsadmin -allowSnapshot /path
hdfs dfs -createSnapshot /path snap1
你可以告诉我:
rm / rm -skipTrash)fs.trash.interval 的值我可以直接告诉你 现在还能不能恢复、怎么恢复。