分享一次误删文件恢复经历

正编写的一份源代码文件约 800 行,未用版本控制系统管理,无备份,编辑器的自动备份功能未打开。不小心用 mv file1 file2 命令覆盖了该文件。(:sweat:

覆盖后,第一时间使用 sysrq u 将文件系统挂载为只读并关闭计算机,再使用 LiveUSB 启动计算机。回忆文件内容,根据回忆,文件中应该有 make(map[string]int, len(clientConnPool)) 字样。

执行以下命令:

grep -z -a -B800 -A800 "make(map[string]int, len(clientConnPool))" /dev/sda3 | tee recup

1TB 5400rpm 的硬盘经过约 2 小时的扫描后,得到一个约两万四千行的文件,所有代码均得到恢复。不过一些空行和结尾大括号没了,需要花时间手工恢复。

3 个赞

这是很恐怖的事情,一定要小心啊,最好用上git

所以我的重要文件一般都在mega里。

man grep:
grep understands three different versions of regular expression syntax: “basic” (BRE), “extended” (ERE) and “perl” (PCRE). In GNU grep, there is no difference in
available functionality between basic and extended syntaxes. In other implementations, basic regular expressions are less powerful.
猜测也许用egrep或grep -E会更快一些?