Linux HPC集群下使用mv命令误移.R、.sh文件如何恢复?
故障原因排查
你执行的命令逻辑依赖target目录预先存在:
- 若执行命令前已创建
target目录:所有.R、.sh文件均被移动到该目录下,直接进入target目录即可找到文件。 - 若执行命令前未创建
target目录:mv命令会把第一个匹配的文件重命名为target,后续每一个匹配的文件都会直接覆盖这个target文件,最终仅最后一个被处理的文件内容会保留在名为target的文件中,其余文件内容被覆盖。你可以先把当前的target文件按对应后缀重命名,先救回最后一个文件。
恢复方案
按优先级从高到低选择:
- 优先联系HPC集群管理员申请备份恢复:绝大多数正规HPC都会对用户家目录、数据目录做定时快照备份,提供你执行命令的时间、丢失文件的所在路径和后缀,即可从备份恢复数据,这是成功率最高的方案。
- 若集群无可用备份,立刻停止对丢失文件所在磁盘分区的所有写入操作,避免被删除的文件数据块被新内容覆盖,联系管理员使用
extundelete、testdisk等磁盘恢复工具扫描对应分区,批量恢复后缀为.R和.sh的文件。普通用户无sudo权限时不要自行安装工具操作,避免误写入导致恢复失败。
后续避坑建议
后续执行批量操作前,先加echo打印命令验证逻辑是否正确,确认无误后再去掉echo实际执行,示例:
find . -name '*.R' | xargs -I files echo mv files target
同时批量移动前先确认目标目录已创建,避免重命名覆盖问题。
内容的提问来源于stack exchange,提问作者Bogdan
相关产品推荐
相关产品推荐

