その場で出力をtar / untarする方法


27

以下を行う慣用的な方法は何ですか

  • tarからstdout
  • このtar出力をstdoutから読み取り、他のフォルダーに抽出します。

私の解決策は tar --to-stdout .. | tar -C somefolder -xvf -

しかし、もっと慣用的な方法があるかもしれません。

回答:


34

同じ-f -オプションがtarringにも機能します。

tar -cf - something | tar -C somefolder -xvf -

GNU tarはデフォルトでstdioを使用します:

tar -c something | tar -C somefolder -xv

rsyncも人気があります。

rsync -av something/ somefolder/

9

ここに別のユースケースを追加するだけです。ディスク領域がほとんどないシステムに大きなディレクトリ構造があり、別のマシンに大量の領域があるtar.gzファイルが必要になりました。

tar -czf - big-dir | ssh user@host 'cat > /path/to/big-dir.tar.gz'

これにより、ネットワークのオーバーヘッドが節約され、代わりに転送にrsyncを使用する場合に反対側でtarを実行する必要がなくなります。


Netcatはこれに最適です。(あるホストから別のホストへの猫)。
ヘネス

3
@Hennes:その認証の欠如、整合性チェック、データの暗号化だけでなく、手動でそれを起動することで、両方の個々の転送(すなわち2×作業)のための側面、それは少し小さい完璧よりも聞こえる
grawity

ほとんどの場合、ネットワーク経由でダンプする前にgzipします。統合の失敗はすべて、圧縮解除エラーとして表示される可能性があります(ただし、使用したときにまったくエラーは発生しませんでした)。2つのプログラムの開始に関して:賛成、真。
ヘネス

3
それはもっと手間がかかるかもしれませんが、セキュアなローカルネットワークまたはVPN上のマシン間で時間に敏感な操作中にリンクを介して大きな圧縮アーカイブを送信する場合、ncを介したパイピングはSSH(1Gbネットワークを介して、しばしば2倍。整合性チェックのためにアーカイブのmd5合計を送信します。
スプーラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.