Pertanyaan Cara mengekstrak satu folder dan subfoldernya dari "tarball" (.tar.gz)


Saya perlu mengekstrak satu folder dan subfoldernya dari sebuah tarball (.tar.gz) pada server CentOS. Saya sama sekali tidak tahu bagaimana melakukannya menggunakan terminal SSH.

Saya mencoba:

gunzip -c files_20100623.0110.tar.gz | tar -xvf home/bsisplas/public_html/staging/template/*.*

Namun tidak dapat menemukan file di dalam arsip. Juga, di mana di gunzip Sintaks apakah Anda menentukan di mana file yang diekstraksi harus pergi? Saya adalah noob terminal Linux untuk sedikitnya.


4
2018-06-23 16:18


asal


gunakan tar dengan -z flag .. caranya lebih bersih daripada pemipaan. dan Anda masih harus menunggu lama karena arsip akan benar-benar diekstraksi sebelum ekstraksi - matthias krull


Jawaban:


Pertama, saat Anda menggunakan -f opsi untuk tar, Anda perlu memberikan argumen yang mengatakannya nama file arsip. Karena Anda memberinya makan dari pipa gunzip, kita gunakan - berarti input standar:

gunzip -c files_20100623.0110.tar.gz | tar -xvf - home/bsisplas/public_html/staging/template/*.*

Poin saya berikutnya adalah Anda hanya perlu memberikan nama direktori. (Juga: *.* biasanya merupakan DOS-isme. Jika Anda maksud "semua file" di Unix, tulis saja *. Jika Anda menulis *.* Anda mengatakan "semua file dengan titik di suatu tempat di nama mereka" yang dapat mengecualikan file penting tanpa titik, seperti Makefile atau README):

gunzip -c files_20100623.0110.tar.gz | tar -xvf - home/bsisplas/public_html/staging/template

Itu seharusnya berhasil. Tetapi Anda dapat membuat berbagai hal menjadi lebih mudah dengan menggunakan tar's -z opsi, yang memberitahukannya untuk melakukan gunzip diri. Kami menggunakannya, dan mengganti - masukkan nama file dengan nama file arsip:

tar -xvzf files_20100623.0110.tar.gz home/bsisplas/public_html/staging/template

Bagaimana cara kerjanya?


6
2018-06-23 16:29



baik saya tidak mendapatkan kesalahan, hanya kursor saja duduk di sana sampai saya menekan ctrl-c ... ohhh man saya benar-benar tidak ingin mengunduh 6 GB hanya untuk mendapatkan beberapa ratus K - mikey1980
Um, berapa lama kamu menunggu? Jika itu arsip 6 GB, mungkin perlu sedikit waktu. Anda tidak akan melihat apa pun hingga sampai ke file yang Anda inginkan. - coneslayer
jika saya menggunakan garis bawah Anda, apakah itu akan mengekstrak ke folder saat ini atau di atas file asli .. ini adalah server produksi jadi saya harus memastikan itu tidak menggantikan yang asli .. ada folder bernama 'tmp' di dir yang sama dengan arsip ... ini di mana saya berharap untuk menempatkan file yang diekstrak - mikey1980
@mikey: apa yang Anda unduh? Anda menyebutkan ssh, tetapi sepertinya tarball Anda adalah lokal. Sayangnya, mengingat struktur file tar, Anda harus memindai seluruh hal sampai Anda menemukan file yang Anda inginkan. Ini jauh lebih masuk akal di hari-hari Pita Magnet magnetik. - msw
@ mikey1980 Dari mana pun Anda bekerja, ia akan meletakkan file di rumah / bsisplas / ..., membuat direktori tersebut jika perlu. Jika Anda ingin direktori tersebut dibuat tmp, hal yang termudah adalah cd tmp sebelum menjalankan perintah, dan ubah nama file arsip menjadi ../files_20100623.0110.tar.gz. @ msw Saya pikir dia ssh'ing ke server di mana arsip 6 GB disimpan secara lokal, dan mungkin ingin mengekstrak file untuk transfer berikutnya ke komputer lain. Dengan begitu dia tidak perlu memindahkan seluruh arsip 6 GB ke mesin lain. - coneslayer


Yang Anda butuhkan hanyalah tar. Anda bisa mendapatkan daftar file dalam tarball dengan -t pilihan, dan kemudian ekstrak seperti biasa tetapi dengan jalur file sebagai argumen terakhir: tar zxvf foo.tar.gz filepath


3
2018-06-23 16:25



ya, sesederhana itu. - matthias krull