【转】用 grep 恢复误删的文本文件
来源:互联网 发布:windows 开机启动 编辑:程序博客网 时间:2024/05/18 14:25
转载自:http://www.vpsee.com/2010/08/using-grep-to-recover-text-files/
作为长期的电脑使用者,肯定会有误删文件的经历,在 Mac OS X 和 Windows 上删除的文件都会默认进 “回收站”。在 Linux 上如果事先没有用别名(alias)修改默认的 rm 功能,rm 后文件就会丢失,幸运的是,在一般的删除文件操作中,Linux 并不会立即清空存储该文件的 block 内容,而只会释放该文件所占用的 inode 和 data block,Linux 上 rm 的过程其实就是将 inode bitmap 和 data block bitmap 中的相应标识设为空闲状态的过程,并不涉及到真正的数据,这也是为什么在 Linux 下删除大文件这么快速的原因,因为大文件所占的磁盘根本就没有清空。所以,如果我们能找到文件对应的 inode,由此查到相应的 data block,就可能从磁盘上把已删除的文件恢复出来,很多文件/磁盘恢复工具都是这么做的。
一般来说二进制文件、库文件等删除后都可以从其他 Linux 拷贝恢复,不是很要紧,如果自己辛苦写的脚本或者配置文件误删了就杯具了。误删这种蠢事经常在 VPSee 身上发生,最近一次是在今年年初的时候,开了 screen 多次 ssh 到不同服务器上,在前后切换的过程中删除了一个很肯定的配置文件,后来发现删的文件是对的,可惜在一台错误的服务器上,本来应该在 A 服务器上删除 file.txt 结果在 B 服务器上删除了 file.txt,多个 screen 和 ssh 把自己搞晕了,而且主机名没有安排好,多台机器都是用的 localhost,不利于识别当时的环境。如果使用 Linux 的时候不幸误删了一个文本文件怎么办呢?
先临时建一个文本文件 vpsee.log 做测试,然后删除这个文件:
如果能记住刚才删除文件中的某个关键字的话可以用 grep 搜索整个 /dev/sda1,-a 标志位的意思是把 /dev/sda1 这个分区看成是文本形式的(分区本身是二进制形式的),-B 10 -A 100 的意思是如果找到关键字就打印出其前10行和后100行的内容:
在一堆 @ 之间可以找到我们刚才删除的内容:
当然,如果误删了二进制、doc、png/jpg/gif 之类的文件,可以用一些第三方 ext2/ext3 文件恢复工具帮助恢复文件,比如 TestDisk, PhotoRec 等。
- 用 grep 恢复误删的文本文件
- 用 grep 恢复误删的文本文件
- 【转】用 grep 恢复误删的文本文件
- linux 用grep恢复误删的文本文件
- 用‘grep’搜索文本文件
- 用‘grep’搜索文本文件中的特定字符
- grep命令帮你恢复误删文件
- 使用grep搜索文本文件
- grep搜索文本文件
- 使用grep恢复被删文件内容
- 使用grep恢复被删文件内容
- 使用grep恢复被删文件内容
- 使用grep恢复被删文件内容
- shell脚本抽取文本文件中指定字符串的方法:sed+grep方法、awk+grep方法(必要时可以联合sed以及grep)、grep+cut方法
- shell脚本抽取文本文件中指定字符串的方法:sed+grep方法、awk+grep方法(必要时可以联合sed以及grep)、grep+cut方法
- shell脚本抽取文本文件中指定字符串的方法:sed+grep方法、awk+grep方法(必要时可以联合sed以及grep)、grep+cut方法
- shell脚本抽取文本文件中指定字符串的方法:sed+grep方法、awk+grep方法(必要时可以联合sed以及grep)、grep+cut方法
- shell脚本抽取文本文件中指定字符串的方法:sed+grep方法、awk+grep方法(必要时可以联合sed以及grep)、grep+cut方法
- 9,Objective-C语法之NSDictionary和NSMutableDictionary
- 给计算机专业大学生整理的书单
- 动画的简单介绍
- Tomcat内存溢出的三种情况及解决办法分析
- 10,Objective-C语法之NSSet和NSMutableSet
- 【转】用 grep 恢复误删的文本文件
- 11, Objective-C语法property详解
- USACO Chapter1-Getting started Section 1.3
- 12,Objective-C语法之KVC的使用
- GoAgent设置RC4加密
- 写文件换行
- sublime配置全攻略
- [MacrayKV] An innovative parallel testing framework
- 13,Objective-C语法之KVO的使用