我有一个没有文件扩展名的奇怪文件,据说它是 git 存储库内容的存档。根据file (1)
,这是一个“X1 档案”:
$ file my_git_repo
my_git_repo: X1 archive data
但是,我想不出任何方法来提取或查看此文件的内容。我试过了:
tar
unzip
bzip2
xz
lzip
lzma
lzop
gzip
uncompress
但是这些工具都不能识别我的文件。我也尝试在Wikipedia和Arch Wiki上寻求帮助,但这些页面都没有提到“X1”。我还尝试了“X1 存档”或“提取 X1 文件”的谷歌搜索变体,但主要是我得到了名为“X1”的产品或服务的结果,似乎与名为“X1”的文件格式无关。最后,我尝试使用类似的工具查看该文件strings
,该文件确实包含我希望在我的 git 存储库中的文件的文件名以及该存储库中文件的片段,所以我不认为这个文件是只是随机数据或类似的东西。
我有什么样的文件,如何查看其内容?
好的,这个我想通了。
我注意到文件的第一行包含一个奇怪的字符串:
那根弦似曾相识。我的默认 SSH 配置尝试转发 X11 连接,但是当它失败时——例如通过 ssh 对 git 服务器运行 git 操作时——该字符串会打印在 stderr 上:
我猜测创建 git 存档的库同时捕获了 stdout 和 stderr 而不仅仅是 stdout,这将解释该文件的第一行是如何形成的。
因此,如果我删除该文件的第一行,我会得到更合理的输出
file (1)
:如果我将文件重命名为
my_git_repo.zip
并尝试使用 查看文件的内容unzip -l
,我发现它包含我期望的文件,并且当我使用 提取存档时unzip
,我得到了我想要的文件。我不确定从哪里
libmagic
得到这个文件是“X1 存档”的想法,但我猜这与“X1”是损坏文件的前两个字符有关。