Eu tenho um arquivo estranho sem uma extensão de arquivo que supostamente é um arquivo do conteúdo de um repositório git. Segundo file (1)
, trata-se de um "arquivo X1":
$ file my_git_repo
my_git_repo: X1 archive data
No entanto, não consigo descobrir nenhuma maneira de extrair ou visualizar o conteúdo deste arquivo. Eu tentei:
tar
unzip
bzip2
xz
lzip
lzma
lzop
gzip
uncompress
Mas nenhuma dessas ferramentas reconhece meu arquivo. Também tentei procurar ajuda na Wikipedia e no Arch Wiki , mas nenhuma dessas páginas menciona "X1". Também tentei pesquisar no Google variações de "arquivo X1" ou "extrair arquivo X1", mas principalmente obtive resultados para produtos ou serviços chamados "X1" e nada que parecesse relacionado a um formato de arquivo chamado "X1". Por fim, tentei dar uma olhada no arquivo com ferramentas como strings
, e o arquivo contém os nomes dos arquivos que espero que estejam em meu repositório git, bem como trechos de arquivos dentro desse repositório, então não acho que esse arquivo seja apenas dados aleatórios ou algo assim.
Que tipo de arquivo eu tenho e como posso visualizar seu conteúdo?
Ok, eu descobri isso.
Percebi que a primeira linha do arquivo contém uma string curiosa:
Essa corda parece familiar. Minha configuração SSH padrão tenta encaminhar conexões X11, mas quando falha - como ao executar operações git para servidores git por ssh - essa string é impressa em stderr:
Suponho que a biblioteca que criou o arquivo git capturou stdout e stderr em vez de apenas stdout, o que explicaria como surgiu a primeira linha desse arquivo.
Portanto, se eu remover a primeira linha desse arquivo, obterei uma saída muito mais razoável de
file (1)
:E se eu renomear o arquivo para
my_git_repo.zip
e tentar visualizar o conteúdo do arquivo comunzip -l
, descubro que ele contém os arquivos que espero e, quando extraio o arquivo comunzip
, obtenho os arquivos que desejo.Não tenho certeza de onde
libmagic
tirei a ideia de que esse arquivo era um "arquivo X1" para começar, mas acho que tem a ver com "X1" sendo os dois primeiros caracteres do arquivo corrompido.