可悲的是,我使用以下命令编译了一个 .c 文件:
$ gcc a.c -o a.c
所以 ac 变成了覆盖我旧 c 文件的可执行文件...我想问一下我可以拿回真正的 ac 文件吗?
当您覆盖文件时,操作系统不会将数据完全放在同一位置,它只是将旧数据标记为可用,并将新数据写入磁盘。它可能会覆盖您的文件,也可能不会。午夜指挥官有一个工具可以尝试取回你的文件。
目前 Midnight Commander 与一些虚拟文件系统 (VFS) 打包在一起: ...undelfs,用于恢复 ext2 文件系统(Linux 系统的默认文件系统)上已删除的文件
同时,您可能不应该在计算机上保存任何其他文件,尤其是在您删除的文件所在的目录中。
编辑:顺便说一句,这是一篇旧文章,linux 已经有一段时间没有使用 ext2 了。但我认为它应该仍然有效。
不幸的是,这几乎是不可能的,除非你擅长逆向工程二进制代码,AFAIK。
您可以从备份中恢复它,也可以从源代码控制系统中恢复它。
如果你没有这两个,你应该开始使用两者(现在你知道为什么了!)。
您还可以使用您正在使用的操作系统的文件恢复工具来恢复文件,或者如果失败,您可以反编译目标文件。这是一个反编译器:
http://boomerang.sourceforge.net/cando.php?hidemenu
这是在用“c decompiler”搜索谷歌后列表中的第一个。
这是关于反编译器的stackoverflow问题。
grep
是恢复丢失的 C 文件的好工具。
grep -a -B 25 -A 100 '文件中有一些字符串' /dev/sda1 > recover.txt
上述命令恢复 C 文件中“文件中的某些字符串”行之前 25 行和之后 100 行丢失的文本,并在文件中输出恢复的文本recover.txt
。因此,您可以根据需要更改 25 和 100 的值。上面的命令还假设分区名称是/dev/sda1
. 您可以使用该mount
命令来查找您的分区名称。