在 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 做测试,然后删除这个文件: $ echo "important log file for vpsee.com" > vpsee.log $ cat vpsee.log important log file for vpsee.com $ rm vpsee.log如果能记住刚才删除文件中的某个关键字的话可以用 grep 搜索整个 /dev/sda1,-a 标志位的意思是把 /dev/sda1 这个分区看成是文本形式的(分区本身是二进制形式的),-B -A 的意思是如果找到关键字就打印出其前行和后行的内容: # grep -a -B -A 'vpsee.com' /dev/sda1 > tmp.txt在一堆 @ 之间可以找到我们刚才删除的内容: $ vi tmp.txt ... @$^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@Ç^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@È^K^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^Q^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@È^K^@^@×^@ ^@^@important log file for vpsee.com @ @ ...当然,如果误删了二进制、doc、png/jpg/gif 之类的文件,可以用一些第三方 ext2/ext3 文件恢复工具帮助恢复文件,比如 TestDisk, PhotoRec 等。
推荐整理分享用grep恢复误删的文本文件(grep的结果 再次查找),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:grep delete,grep的结果 再次查找,lsof grep delete,grep删除,lsof grep delete,grep删除,grep删除,grep deleted,内容如对您有帮助,希望把文章链接给更多的朋友!
Linux流量监控工具 iftop (最全面的iftop教程) 一、iftop是什么?iftop是类似于top的实时流量监控工具。官方网站:
删除Mysql的MySql-bin.X日志文件的方法 我的数据库加起来大概M吧..但/usr/local/mysql/var这个目录竟然有M,MySql-bin.文件大概占了+M,真浪费空间啊那么mysql数据库文件夹中的mysql-bin.是什
编写每天定时切割Nginx日志的脚本 下面是deepvps自己用的自动每天定时切割Nginx日志的脚本,很方便很好用,推荐给大家使用。本脚本也是参考了张宴老师的文章,再次感谢张宴老师。1、