Linux如何查找丢失的文件
导读:Linux查找丢失文件的实用步骤 一 先判断属于哪类丢失 文件被移动到回收站:部分桌面环境(如GNOME)自带回收站,可在文件管理器的回收站中直接还原。命令行删除(如rm)通常不走回收站。若你曾配置过“回收站脚本/别名”,可到其目录(如*...
Linux查找丢失文件的实用步骤
一 先判断属于哪类丢失
- 文件被移动到回收站:部分桌面环境(如GNOME)自带回收站,可在文件管理器的回收站中直接还原。命令行删除(如rm)通常不走回收站。若你曾配置过“回收站脚本/别名”,可到其目录(如**~/.trash**)查找。
- 文件被删除但仍被进程占用:进程未关闭文件描述符时,文件仍存在于磁盘,可用lsof定位并复制恢复。
- 文件被真正删除且未被覆盖:需要按文件系统类型选择恢复工具(如extundelete、TestDisk、PhotoRec)进行扫描恢复。
二 快速定位仍存在的文件
- 全盘按名称查找(区分大小写):
sudo find / -name "filename" 2> /dev/null - 忽略大小写:
sudo find / -iname "filename" 2> /dev/null - 按通配符:
sudo find / -name "*.log" 2> /dev/null - 按时间范围(最近7天修改):
sudo find / -mtime -7 -type f 2> /dev/null - 按大小范围(例如大于100MB):
sudo find / -size +100M -type f 2> /dev/null - 按内容关键字搜索(适合文本/日志):
sudo grep -R "关键字" /目标目录 2> /dev/null - 使用locate加速(需先更新索引):
sudo updatedb & & locate filename
三 文件已被删除但可能仍在被进程使用
- 查找被删除但仍打开的文件:
lsof | grep deleted - 输出中关注PID与FD(文件描述符),进入对应进程工作目录复制回文件:
- 查看进程当前目录:
ls -l /proc/< PID> /cwd - 直接复制文件描述符内容:
cp /proc/< PID> /fd/< FD> /recovery/recovered_file
- 查看进程当前目录:
- 若文件被日志进程(如rsyslog)占用,优先停止该服务再复制,避免继续写入影响恢复。
四 文件已被删除且未被覆盖的专业恢复
- 立即保护现场
- 卸载或只读挂载目标分区:
sudo umount /dev/sdX1或sudo mount -o remount,ro /dev/sdX1 - 先做整盘镜像再恢复:
sudo dd if=/dev/sdX of=/backup/disk_image.img bs=4M
- 卸载或只读挂载目标分区:
- 按文件系统选择工具
- ext3/ext4:
extundelete- 恢复单文件:
sudo extundelete /dev/sdX1 --restore-file /path/to/file - 恢复目录:
sudo extundelete /dev/sdX1 --restore-directory /path/to/dir - 恢复全部可恢复项:
sudo extundelete /dev/sdX1 --restore-all
- 恢复单文件:
- 多文件系统/分区恢复:TestDisk(支持分区与文件恢复)
- 启动:
sudo testdisk,选择磁盘 → 分区表类型 → Advanced → 浏览已删除文件 → 选择并恢复
- 启动:
- 通用文件雕刻(不依赖文件系统):PhotoRec
- 启动:
sudo photorec /dev/sdX,选择分区与文件系统类型 → 选择要恢复的文件类型 → 指定输出目录 → 开始恢复
- 启动:
- 其他雕刻工具:Scalpel、Foremost(按文件头尾特征恢复)
- ext3/ext4:
- 重要提示:恢复文件必须写入到另一块磁盘/分区,切勿写回原分区,以免覆盖待恢复数据。
五 预防与后续建议
- 使用回收站机制:安装trash-cli并将
rm替换为trash,可用trash-restore还原;或自建脚本将删除文件移至**~/.trash**。 - 删除前二次确认:设置别名如
alias rm='rm -i',或禁用rm强制使用回收站。 - 重要文件加锁:
sudo chattr +i important_file(解除:sudo chattr -i important_file) - 建立备份与快照:定期全量/增量备份;使用LVM或Btrfs快照快速回滚。
- 监控关键目录:
inotifywait -m -r -e delete /important/dir,及时发现异常删除。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux如何查找丢失的文件
本文地址: https://pptw.com/jishu/771187.html
