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.

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.