在 Linux + Hadoop 环境下“误删文件”能否恢复,主要取决于删除方式和Hadoop 的配置。下面按常见场景系统说明。
HDFS 自带回收站机制(类似 Windows 垃圾箱)。
core-site.xml 中开启了:
<property>
<name>fs.trash.interval</name>
<value>1440</value> <!-- 分钟,0 表示关闭 -->
</property>
被删除文件会移动到:
/user/用户名/.Trash/Current/原路径
hdfs dfs -ls /user/youruser/.Trash/Current/
hdfs dfs -mv /user/youruser/.Trash/Current/path/to/file /original/path/
⚠️ 注意:
fs.trash.interval 时间会被自动清理hdfs dfs -rm -skipTrash 会直接删除,无法恢复如果之前对目录开启了快照:
hdfs dfsadmin -allowSnapshot /data
hdfs dfs -createSnapshot /data snap1
恢复:
hdfs dfs -cp /data/.snapshot/snap1/file /data/file
✅ 适合重要目录定期保护
如果:
理论上可通过:
fsimage / edits❌ 极不推荐,风险极高,通常需专业支持
如果误删的是:
extundelete /dev/sdx1
或
testdisk
⚠️ 条件:
如果是:
list_snapshots
restore_snapshot 'snap1'
✅ 开启 HDFS Trash
✅ 重要目录开启 Snapshot
✅ 删除前先 hdfs dfs -mv 到临时区
✅ 权限控制(禁止普通用户 rm)
✅ 定期元数据与数据备份
请告诉我:
rm / hdfs dfs -rm)我可以给你具体可执行的恢复命令。