web-dev-qa-db-ja.com

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

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

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

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

しかし、それを行うためのより慣用的な方法があるかもしれません。

29
shabunc

同じ-f -オプションは、風袋引きにも使用できます。

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

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

tar -c something | tar -C somefolder -xv

rsyncも人気があります。

rsync -av something/ somefolder/
39
user1686

ここに別のユースケースを追加するだけです。ディスクスペースがほぼ不足しているシステムに大きなディレクトリ構造があり、大量のスペースがある別のマシンのディレクトリ構造のtar.gzファイルを作成したかったのです。

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

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

9
quickshiftin