tarアーカイブからいくつかのメンバーを抽出し、ネットワークを介してパイプする


9

編集:私は追加member01したいmember02とディレクトリblah/

tarball_1.tar.gztest/20ファイルのディレクトリが含まれています。メンバーtest/member01test/member02ディレクトリのみを抽出blah/し、ssh / scpを使用して別の「remote_host」にコピーしたい。

これはワンライナーとして実行できますか?、、またはの使用を検討しましたがtar、これらのユーティリティにはまだ熟練していないようです。paxcpio

回答:


15
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file'
  • -x :抽出
  • -z : 使って gzip
  • -f :ファイルを入力として取り込みます。
  • -O :stdoutに抽出

file_you_want_to_extract抽出されfile.tar.gz、標準出力に、にパイプsshで実行され、catリモートホスト上で、リモートにしてその標準を書き込みますdestination_file。もちろん、リモートホスト上の目的の宛先ファイルへの書き込み権限があることを確認する必要があります。


元の投稿でははっきりしていませんでした:)複数のメンバーとディレクトリを抽出する必要があります。
Felipe Alvarez、

tar -xz0fである必要がありfます。アーカイブ名の後に
Felipe Alvarez、

1
stdoutに複数のファイルを抽出するのはあまり意味がないため、複数のメンバーを抽出する場合、それらを1行にする場合は面倒になります。おそらくtar、抽出するものごとに、scp -r member1 member2 blah user@host:/destination/folder/それらをコピーするために使用する必要があります。本当に1行にしたい場合は、それらすべてのコマンドをで連結できます&&。より実用的なオプションは、コマンドラインオプションを反復処理してtarそれぞれに対して実行scpし、最後にそれらすべてを実行するスクリプトを作成することです。
アタナミール2011

ああ、なるほど。したがって、「簡単な」ワンライナー方式はありません。おかげで:-)
フェリペアルバレス

2
あるいは、「所要時間」よりも「ワンライナー」の方が重要な場合は、アーカイブ全体をsshを介してパイプ処理し、反対側の必要なメンバーを抽出できます「cat file.tar.gz | ssh user @ host ' tar zxvf file1 file2 dir1 '
Colin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.