BASHを使ってTarに接続する方法は?

BASHを使ってTarに接続する方法は?

長い話を短く

私はBase64でエンコードされたPNG画像を含むTarアーカイブで作業しています。ファイルを解凍した後、PNG画像をbase64エンコーディングから標準PNGエンコーディングにデコードするために、Tarの抽出機能に接続されたBASH(または他の効率的な方法)を使用したいと思います。簡単な操作でcat $input_file | base64 -d >$output_file画像を正常にデコードできます。

ユーザーが画像をデコードするために追加のタスクを実行する必要がないようにtar -xfに接続する方法はありますか?

内部にGNU Tar ドキュメント私はTarプログラムの実行のさまざまなポイントで私がリンクしたい関数の名前を維持するために、いくつかの変数が実際に保持されることを発見しました。ただし、この資料では、これらの変数がTarを構成するために設定できる他の変数と一緒にbackup-specsという名前のファイルにあると説明しています。残念ながら、ファイルパスは提供されません。また、実行すると、sudo find / -name backup-specsこのファイルが私のUbuntuバージョン13.04システムに存在しないというメッセージが表示されます。

TL; DRに含まれていない背景情報

私はブラウザベース(WebGL)パーティクルエフェクト生成アプリケーションを開発してきました(http://www.articleeff.org)、(https://github.com/cgrabowski/webgl-article-効果-editor)、(https://github.com/cgrabowski/webgl-article-効果)。私は効果データをtarアーカイブとして保存してロードするためのクライアント専用ソリューションの作成を始めました。ただし、バイナリデータを処理するクライアント側JavaScriptの制限された機能のため、エフェクトのテクスチャとして使用されるイメージはBase64エンコーディングとして保存されます。効果データをTarアーカイブとして保存できました(まだGithubにプッシュしていません)。ただし、Tarアーカイブのイメージは、Base64エンコーディングでデコードされていない限り操作できません。

答え1

--to-command次のオプションを使用したいと思いますtar

tar xf tarfile.tar --to-command='sh -c "mkdir -p $(dirname $TAR_FILENAME) && base64 -d > $TAR_FILENAME"'

これはマニュアルに記載されています。ここ

backup-specsはマニュアルで配布されていると主張するバックアップシステムの一部ですが、私のtarシステムにはこれがなく、少なくともこれ以上実際には使用されていないようです。

関連情報