Linux文件包含“@​​^@^@^@”,如何恢复?

Linux文件包含“@​​^@^@^@”,如何恢复?

我刚刚写完一个大型 C 代码,但是当我保存并再次打开时,文件包含奇怪的字符:"@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ @^@^@^@^@0000664^@0001750^@0001750^@0000000031"

我该如何恢复该文件?

我已经写这个程序一整天了。:((

答案1

这可能不太可能,但这看起来很像 TAR 文件头的一部分。可能你曾经尝试用 tar 备份它,并使用与输出文件相同的文件名?我怀疑这一点的原因是 TAR 文件头以以下内容开头:

 char filename[100];  // null padded
 char mode[8]; // octal
 char nuid[8]; // octal
 char ngud[8];
 char size[12];
 ...

因此,查看该代码片段,它符合以下模式:文件为 rw-rw-r,所有者/组 ID 为 1000,大小在 200 到 207 字节之间(看起来该字段在您的剪切粘贴中被截断了)。如果文件在第 257 个字符处有“ustar”,则表明该文件存在问题。在这种情况下,只需使用 tar 命令尝试从中提取(以防万一,将其放在临时目录中),希望您能从中获得一些信息。

答案2

退出 vim 之前输入

:e! your_file_path

尝试加载文件。这是以防您只是尝试编辑错误的文件。

在另一个 shell 中,扫描 your_filename.recover 或 file_name.swp 文件。如果找到,则启动

vim -r file_name

应该可以取回你的文件。

答案3

我很少在日志文件中遇到这些字符。许多人将它们称为文件中的“洞”,即文件中的实际数据量与其指示的大小不匹配。据我对此的少量研究,我发现这种情况的发生是因为在文件上同时执行多个操作时出现同步问题,或者在将文件写入磁盘时遇到一些空间紧缩问题。 参考这个

总而言之,文件的这些部分没有任何内容,并且这些漏洞由不同的文本编辑器以不同的方式呈现。

我真的为你感到难过,因为我知道失去你花了一整天时间(以及你心爱的努力、你的热情和精力)的东西是多么痛苦,但你很有可能能够恢复它们。:(

答案4

^@ 是二进制零、低值、'\0'、0x00。最好的猜测是你有一个零分隔的字符串,并且你正在写出数组的长度char而不是使用strlen

相关内容