ekstrak beberapa anggota dari arsip tar dan pipa melalui jaringan

9

sunting: Saya ingin tambahan member01dan member02dan direktoriblah/

tarball_1.tar.gzberisi direktori test/dengan 20 file. Saya ingin mengekstrak hanya anggota test/member01dan test/member02direktori blah/dan menyalinnya ke "remote_host" lain menggunakan ssh / scp.

Apakah ini dapat dilakukan sebagai one-liner? Aku dianggap menggunakan tar, paxatau cpiotapi kurasa aku tidak sangat terampil dengan utilitas ini belum.

Felipe Alvarez
sumber

Jawaban:

15
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file'
  • -x : Ekstrak
  • -z : Melalui gzip
  • -f : Ambil file sebagai input.
  • -O : Ekstrak ke stdout

The file_you_want_to_extractdiekstrak dari file.tar.gzke output standar, disalurkan ke ssh, yang berjalan catpada host remote dan menulis standar ke remote destination_file. Tentu saja, Anda ingin memastikan Anda memiliki izin menulis ke file tujuan yang Anda inginkan pada host jarak jauh.

atanamir
sumber
Saya tidak jelas dalam posting asli saya :) Saya perlu mengekstrak lebih dari satu anggota, ditambah direktori.
Felipe Alvarez
harus tar -xz0f: setelah fdatang nama arsip
Felipe Alvarez
1
Mengekstrak banyak anggota akan berantakan jika Anda ingin mereka menjadi satu-baris, karena mengekstraksi banyak file ke stdout tidak masuk akal. Anda mungkin harus melakukannya taruntuk setiap yang ingin Anda ekstrak, lalu gunakan scp -r member1 member2 blah user@host:/destination/folder/untuk menyalinnya. Jika Anda benar-benar ingin membuatnya satu baris, Anda dapat menggabungkan semua perintah itu dengan &&. Opsi yang lebih praktis adalah membuat skrip juga yang berganti melalui opsi baris perintah dan mengeksekusi taruntuk masing-masing dan kemudian scpsemuanya pada akhirnya.
atanamir
ahhhhh, begitu. Jadi tidak ada metode "liner" yang mudah. Terima kasih :-)
Felipe Alvarez
2
Atau, jika "one-liner" lebih penting daripada "berapa lama", Anda dapat menyalurkan seluruh arsip melalui ssh dan mengekstrak anggota yang Anda inginkan di sisi lain "cat file.tar.gz | ssh user @ host ' tar zxvf file1 file2 dir1 '
Colin