「X1アーカイブ」を抽出する方法は?

「X1アーカイブ」を抽出する方法は?

Gitリポジトリの内容のアーカイブラと呼ばれるファイル拡張子のない奇妙なファイルがあります。 thisによると、file (1)これは「X1アーカイブ」です。

$ file my_git_repo 
my_git_repo: X1 archive data

ただし、このファイルの内容を抽出または表示する方法が見つかりません。私は試した:

  • tar
  • unzip
  • bzip2
  • xz
  • lzip
  • lzma
  • lzop
  • gzip
  • uncompress

しかし、これらのツールのどれも私のファイルを認識しません。私も見ました。ウィキペディアそしてアーチスウィキ私は助けを求めていますが、このページには「X1」の言及はありません。また、Googleが「X1アーカイブ」または「抽出形式に依存する結果のバリエーションを検索してみました。最後に、次のツールを使用してファイルを表示しようとしましたstrings。あるファイルの一部が含まれていたので、ファイルが単純なファイルではないようです。

私が持っているファイルの種類は何ですか?その内容をどのように表示できますか?

ベストアンサー1

わかりました。

ファイルの最初の行に奇妙な文字列が含まれていることがわかりました。

% head -n 1 my_git_repo | strings
X11 forwarding request failed on channel 0

そのロープはおなじみのようです。私のデフォルトのSSH設定はX11接続を渡そうとしましたが、失敗した場合(たとえば、sshを介してgitサーバーにgitジョブを実行している場合)、次の文字列がstderrに出力されます。

$ git archive --remote=ssh://[email protected]/my_git_repo.git master > my_git_repo.tar
X11 forwarding request failed on channel 0

私はgitアーカイブを生成したライブラリがstdoutの代わりにstdoutとstderrをキャプチャしたと思います。これは、ファイルの最初の行がどのように生成されたかを説明します。

したがって、ファイルの最初の行を削除すると、より合理的な結果が得られますfile (1)

$ tail -n +2 my_git_repo > my_git_repo.edit
$ file my_git_repo.edit 
my_git_repo.edit: Zip archive data, at least v1.0 to extract

ファイルの名前を変更し、次のようにファイルのmy_git_repo.zip内容を表示しようとするとunzip -lunzip

このファイルが「X1アーカイブ」という考えをどこで得たのかはわかりませんが、libmagic破損したファイルの最初の2文字である「X1」に関連しているようです。

おすすめ記事