误删大文件的一个可能解救办法
浏览:1602次 出处信息
上周在一台 OpenNebula 服务器上操作虚拟机镜像,正在生成和比对镜像文件的 md5 指纹:
# ls -l test.img -rw-r--r-- 1 root root 10486808576 Oct 12 02:21 test.img # md5sum test.img
在另一个窗口清理文件的时候不小心误删了这个 10GB 左右的镜像文件:
# rm test.img
这时候行动迅速的话还有时间拯救,因为服务器繁忙,执行 rm 删除 10GB 大文件的时候需要一点时间,利用这点时间切换到另一窗口使用 Ctrl+Z 立刻暂停 md5sum:
[1]+ Stopped md5sum test.img
这里利用的一个原理就是,如果有其他程序正在使用这个文件的话,Linux 不会真正删除这个文件(即使执行了 rm 命令)。我们在删除命令 rm 执行完之前暂停 md5sum,这样 test.img 就一直会被 md5um 占用而不会真正被 rm 删除。
使用 jobs 可以看到被暂停的 md5sum 的进程号 30888,然后查看这个进程打开了哪些文件:
# jobs -l [1]+ 30888 Stopped md5sum test.img # ls -l /proc/30888/fd total 0 lrwx------ 1 root root 64 Oct 22 04:04 0 -> /dev/pts/3 lrwx------ 1 root root 64 Oct 22 04:04 1 -> /dev/pts/3 lrwx------ 1 root root 64 Oct 22 04:04 2 -> /dev/pts/3 lr-x------ 1 root root 64 Oct 22 04:04 3 -> /root/test.img (deleted)
使用 cp 就可以把误删的文件拷贝出来:
# cp /proc/30888/fd/3 save.img # ls -l save.img -rw-r--r-- 1 root root 10486808576 Oct 22 06:11 save.img
误删文本文件的话可以尝试用 grep 恢复,误删 exe/doc/png/jpg/gif 之类的文件的话,可以用第三方 ext2/ext3 文件恢复工具 TestDisk, PhotoRec 等帮助恢复文件。
建议继续学习:
- Linux grep命令用法 (阅读:6002)
- grep 正则表达式选项要记得转义 (阅读:5093)
- 用 LD_PRELOAD 挽救被误删的 libc.so.6 (阅读:4161)
- 学习Grep,Sed中的正则 (阅读:3910)
- 使用PHP将大文件导入到数据库中.. (阅读:3710)
- MySQL从压缩文件恢复数据 (阅读:3694)
- grep: writing output: Broken pipe in iTerm2 (阅读:3493)
- 参数_smon_internal_errlimit与数据库恢复 (阅读:3192)
- 高效的大文件拷贝 (阅读:3128)
- Linux 找出大文件汇总 (阅读:3086)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:使用tar+lz4/pigz+ssh更快的数据传输
后一篇:FastDFS使用经验分享 >>
文章信息
- 作者:vpsee 来源: vpsee.com
- 标签: grep 大文件 恢复
- 发布时间:2014-11-28 22:15:21
建议继续学习
近3天十大热文
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [53] 如何拿下简短的域名
- [52] 图书馆的世界纪录
- [52] android 开发入门
- [50] Go Reflect 性能
- [50] Oracle MTS模式下 进程地址与会话信
- [48] 【社会化设计】自我(self)部分――欢迎区
- [47] 读书笔记-壹百度:百度十年千倍的29条法则
- [36] 程序员技术练级攻略
- [29] 视觉调整-设计师 vs. 逻辑