tarとgzipのパイプインとパイプアウト


11

コマンドからgzip、cpio、tarなどにパイプする方法のハンドルを取得しようとしています。

問題のコマンドはZFSシステムに属しています。Ubuntu Linux 10.04.3でZFSを実行しています。

私が使用するコマンドは次のとおりです。

To create a snapshot;
zfs snapshot media/mypictures@20070607

To copy the snapshot to a directory;
zfs send media/mypictures@20070607 > ~/backups/20070607

Then I can also pipe into gzip
zfs send media/mypictures@20070607 | gzip > ~/backups/20070607.gz

私が理解しているこれらの部分。

しかし、私の最初の質問は、tar + gzipにパイプするにはどうすればよいですか?

この?

zfs send media/mypictures@20070607 | tar czvf > ~/backups/20070607.tar.gz

そして私のもう1つの質問は、どのようにしてtarballまたはgzipからデータを取得するのですか?

私は使用しなければなりません zfs recieve media/mypictures@20070607 < ~/backups/20070607

それで、もし私がtarを使っていたら、これだけでしょうか?

zfs recieve media/mypictures@20070607 | tar xzvf < ~/backups/20070607.tar.gz

何か案が?

回答:


10

tarコマンドライン引数としてファイル名のリストが与えられることを期待しています。私の知る限り、匿名パイプラインの読み取りには使用できません(ファイル名とファイルメタデータとして何を格納しますか?)

$ echo aaa | tar cv > f.tar
tar: Cowardly refusing to create an empty archive
Try `tar --help' for more information.

データが単一の論理項目またはストリームである場合、一連の個別のファイルをグループ化するために使用されるtarのようなものを使用する必要はありません。

それ以外の場合は、最初にデータをファイルに書き込み、ファイルをtarし、次にファイルを削除する必要があります。


本当に?タールは圧縮のもう1つの形式でしたが、tarをスキップしてgzipだけですか?
ianc1215

3
はい、そのまま使用してくださいzfs send media/mypictures@20070607 | gzip -c > ~/backups/20070607.gz
RedGrittyBrick

2
-fオプションを指定しない限り、Tarはファイル名のリストを期待しません(tar fは「-」なしでも受け入れます)。
drevicko 2016

1
@drevicko:質問のコンテキストはtarアーカイブを作成することです。私が意味するファイルのリストは、書かれたアーカイブに含まれるファイル(および/またはディレクトリ)のリストです。例:cd /etc; TAPE=/tmp/rgb.tar tar c hosts passwdファイルのリストはhosts passwd
RedGrittyBrick

2
@RedGrittyBrickですが、質問のコンテキストはパイプからtarすることです。つまり、ファイルのリストはありません。tarがファイルのリストを期待していると言うのは正しくありません。問題は、OPがを指定するときに、(単一の)出力ファイル名を期待し、OP fがそれを提供しなかったことです。
drevicko 2016

10

-fオプションでは、出力はstdoutに行く他に、ファイルを指定します。したがって、リダイレクトを削除します。

zfs send media/mypictures@20070607 | tar czvf ~/backups/20070607.tar.gz

または、fオプションをドロップします。

zfs send media/mypictures@20070607 | tar czv > ~/backups/20070607.tar.gz

同様に、解凍すると。


これは実際に機能しますか?どちらecho "hello" | tar czvf foo.tar.gzecho "hello" | tar czv > foo.tar.gz私のために失敗します。
425nesp
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.