使用计算机的时候,如果不小心删除了重要的文件,这也是属于正常的一个操作,一时手快,删除了重要的文件那也是让人非常苦恼的一件事情,在Windows中删除了文件我们还可以从垃圾箱中找回来,但有时候在Linux中,自己非常辛苦的写满了重要的脚本和一些配置文件的时候,一不小心就给删除了,这种情况我们该怎么办呢,找回文件的方式有点麻烦,我们来看看该怎么恢复。
长期使用电脑误删文件是正常的,一般在Linux上如果事先没有用别名(alias)修改默认的rm功能,rm后文件就会丢失,让用户欣慰的是,如果是在一般的删除文件操作中,Linux它并不会立就会清空存储该文件的block内容,它只是会释放该文件所占用的inode和datablock,这一点我们是需要了解清楚的。
其实在Linux上rm的过程其实就是将inodebitmap和datablockbitmap中的相应标识设为空闲状态的过程,这个过程中它并没有涉及到真正的数据,为什么在Linux下删除大文件这么快速?也就是这个原因了,因为大文件所占的磁盘根本就没有清空。因此如果我们能找到文件对应的inode,由此如果是查到相应的datablock,就可以从磁盘上把已删除的文件恢复出来,在linux上很多文件/磁盘恢复工具都是这么做的。
通常来说二进制文件、库文件等删除后都可以从其他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
$catvpsee.log
important log file for vpsee.com
$rmvpsee.log
如果你可以记住刚才删除文件中的某个关键字的话,这对你的搜索将会有一定的帮助,你可以用grep搜索整个/dev/sda1,-a标志位的意思是把/dev/sda1这个分区看成是文本形式的(因为分区本身是二进制形式的),-B10-A100它的意思是如果找到关键字就打印出其前10行和后100行的内容:
#grep-a-B10-A100'vpsee.com'/dev/sda1>tmp.txt
在一堆@之间可以找到我们刚才删除的内容:符号比较多,需要我们耐心的去寻找。
$vitmp.txt
...
@$^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@?^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@è^K^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^Q^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@è^K^@^@×^@
^@^@importantlogfileforvpsee.com
@
@
...
除此之外,用户如果误删了二进制、doc、png/jpg/gif之类的文件,可以用一些第三方ext2/ext3文件恢复工具帮助恢复文件,比如TestDisk,PhotoRec等这些软件也是可以进行恢复的,操作起来也是比较简单。
总结:在linux中删除文件的话是非常的快速的,原因在文中我们可以知道,但是要恢复的话,那就需要有一定的耐心和技术水平了,操作起来是比较复杂的,有了经验之后,以后也就不会太麻烦了。
上一篇:如何取消开机密码登录计算机
¥49.00
¥499.00
¥5999.00
¥10500.00
¥1888.00