作为长期的电脑使用者,肯定会有误删文件的经历,在 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 做测试,然后删除这个文件:
$ 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 10 -A 100 的意思是如果找到关键字就打印出其前10行和后100行的内容:
# grep -a -B 10 -A 100 '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命令在Linux中尝试恢复误删的文本文件。 首先,理解Linux文件系统的删除机制至关重要。当执行`rm`命令删除文件时,系统并未真正擦除文件的数据,只是更新了文件系统元数据,将文件的inode和...
为了解决这个问题,他们将所有可恢复的文件名保存到文本文件中,并编写脚本来尝试恢复MySQL数据库的相关文件,因为这些文件对于业务至关重要。 在实际操作中,如果遇到类似的情况,应当立即停止对受影响的磁盘进行...
PhotoRec是一个免费的开源工具,可以用于恢复多种类型的文件,包括文本文件、图片、视频等。它无视文件系统,直接从磁盘扇区恢复数据。虽然可能无法恢复文件的原始文件名,但内容通常可以找回。安装后,选择要恢复的...
通过熟练掌握`grep`的这些用法,你可以在Linux或Unix环境中更高效地查找和处理文本信息,甚至在误删文件后使用`grep`来尝试恢复数据。总的来说,`grep`是Linux日常工作中不可或缺的工具,理解其工作原理和各种选项能...
- **移除**:简单的删除操作会将文件移到回收站,用户可以在回收站中恢复误删文件。在图形界面中,右键点击选择"删除"即可。在命令行,使用`del`(Windows)或`rm`(Linux/Unix)命令。 - **彻底删除**:如果要...
`rm [选项] 文件`,需谨慎使用以防误删。 - **slocate(securelocate)**:安全地查找文件。`slocate [选项] 文件名`,用于提高系统安全性。 - **split**:分割大文件成较小的部分。`split [选项] 输入 输出前缀`,...
通常用于查看文本文件的完整内容,或者合并多个文件。 9. **more**和**less**:分页查看文件内容。这两个命令用于查看长文件,可以逐页或按行滚动。 10. **grep**:在文件中搜索特定模式。这个命令对于在大量文本...
5.15.3 使用grep检索多个文件 128 5.15.4 检索不包含特定字符 ??串的文本行 129 5.15.5 在grep中使用正则 ??表达式 129 5.15.6 检索元字符本身 131 5.15.7 在命令行中使用引号 131 5.16 排序 132 第6章 编辑文件 133...
5.15.3 使用grep检索多个文件 128 5.15.4 检索不包含特定字符 ??串的文本行 129 5.15.5 在grep中使用正则 ??表达式 129 5.15.6 检索元字符本身 131 5.15.7 在命令行中使用引号 131 5.16 排序 132 第6章 编辑文件 133...
掌握这些基本命令是Linux日常操作的基础,随着对系统的深入学习,还可以探索更多的命令,如`find`用于查找文件,`grep`用于搜索文件内容,`vi/vim`编辑文本文件,以及`man`查阅命令手册等。在Linux的世界里,命令行...
6. `cat`:查看文件内容,尤其适用于文本文件。 7. `grep`:搜索文件内容,根据特定模式查找信息。 8. `find`:在文件系统中查找文件,根据文件名、大小、时间等条件。 9. `sudo`:以超级用户权限执行命令,用于执行...
8. **cat**:查看文件内容,尤其是文本文件。 9. **more** 和 **less**:分页查看文件内容,便于阅读大文件。 10. **find**:在指定路径下搜索文件,可以根据名称、大小、时间等条件查找。 11. **grep**:在文件中...
- **注意**:使用 `-rf` 需要格外小心,以免误删重要文件。 11. **`cp file1 file2`**:将 `file1` 复制到 `file2`。 - 示例:`cp original_file copy_file` 将 `original_file` 复制为 `copy_file`。 12. **`cp...
grep命令用于在文本文件中搜索指定的模式,而管道符`|`则用于连接两个命令,使得前一个命令的输出成为后一个命令的输入。以下是grep命令的一些高级用法示例: 1. **grep -l ‘boss’\***:显示所有包含“boss”的...
24. **/DEV/NULL文件恢复**:如果误删了`/dev/null`文件,可以尝试重新创建一个空文件,并赋予正确的权限。 25. **CHECKSTOP故障处理**:CHECKSTOP通常是硬件级别的故障,需要检查硬件状态并更换损坏的部件。 26. **...
`git grep` 是 Git 内置的一个命令,用于在项目的所有文件中搜索指定的文本模式。在 TypeScript 项目中,我们可以用它来查找某个函数、变量或类的定义和使用。例如,要查找名为 `myFunction` 的函数,可以运行 `git...