Membuka ritsleting hasil dalam file, bukan folder

0

Saya zip file 6 (ukuran total = 2gb) menggunakan gzip -c myfiles_* > ~/myzip.gzippada server A dan membuat teman saya untuk menyalin server ini ke server B. Sekarang saya telah belajar bahwa file tersebut seharusnya dinamai .gzjadi saya mengganti nama file menggunakan mv. Saya memeriksa bahwa file di server B memiliki ukuran yang sama dengan .gzipfile asli di server A, yang memang berhasil. Lalu aku berlari gunzip myzip.gz.

Hasilnya bukan folder yang berisi file saya, tetapi satu file bernama myfilestanpa ekstensi. Ukuran file adalah ukuran yang sama dengan file awal sehingga semua file telah dikompilasi ke dalam file tunggal ini. Bagaimana cara saya mengekstrak file lagi dari file tunggal ini?

Seperti yang Anda tahu saya masih sangat baru di Linux.

pir
sumber

Jawaban:

1

Saya zip file 6 (ukuran total = 2gb) menggunakan gzip -c myfiles_* > ~/myzip.gzipdan membuat teman saya untuk menyalin server ini ke server lain. Sekarang saya telah belajar bahwa arsip seharusnya dinamai .gzjadi saya mengganti nama file tersebut mv. Lalu aku berlari gunzip myzip.gz.

Hasil yang Anda lihat adalah persis apa yang Anda buat. GZip tidak mempertahankan struktur direktori saat dikompres; itu hanya memampatkan file / data. Jadi ketika Anda menjalankan perintah ini:

gzip -c myfiles_* > ~/myzip.gzip

Semua yang dilakukan GZip adalah menyatukan semua file yang ditemukannya myfiles_*menjadi satu gumpalan besar dan mengompresnya menjadi ~/myzip.gzip. Fakta bahwa ekstensi file tidak benar tidak relevan karena hanya mengganti nama file itu - seperti yang Anda lakukan - akan menyelesaikan masalah tetapi arsip yang mendasarinya masih hanya satu gumpalan besar file.

Adapun cara memulihkannya sekarang? Cukup percaya diri Anda tidak bisa karena masalahnya ada pada logika GZip awal Anda. Satu-satunya rekomendasi yang saya miliki untuk Anda sekarang adalah mulai dari awal dan buat arsip TAR / GZipped seperti ini.

Membuat file TAR / GZipped.

Pertama, jalankan perintah TAR ini:

tar -cf myzip.tar myfiles_*

Itu akan membuat arsip TAR baru bernama myzip.taryang terdiri dari file sistem ditemukan dengan menggunakan pola myfiles_*,.

Sekarang setelah selesai, Anda dapat GZip arsip TAR seperti ini:

gzip myzip.tar

Ini adalah proses saya menangani hal-hal ini di Mac OS X, tetapi jika Anda menggunakan TAR versi GNU — yang digunakan kebanyakan sistem Linux — Anda bisa menjalankan perintah ini untuk menggabungkan kedua langkah menjadi satu sebagai gantinya:

tar -cfz myzip.tar.gz

Perhatikan bahwa ekstra zdalam opsi? Itu memberitahu TAR untuk GZip arsip saat membuatnya.

Mengompres dan membatalkan pengarsipan file TAR / GZipped.

Setelah selesai, Anda akan memiliki arsip baru yang dinamai myzip.tar.gz. Transfer tempat apa pun yang Anda inginkan dan kemudian dekompres dengan menggunakan perintah TAR seperti ini:

tar -xf myzip.tar.gz

TAR cukup pintar saat ini untuk mendeteksi kompresi GZip sebagai bagian dari proses pengarsipan, sehingga akan mendekompres arsip TAR dan kemudian mengekstrak isi arsip TAR itu kembali ke tempatnya agar sama persis dengan struktur file dan direktori dari apa pun sumbernya. mulai dengan.

JakeGould
sumber
Terima kasih atas tanggapan cepatnya! File baru tidak memiliki ekstensi dan saya cukup yakin file itu hanya disalin menggunakan scpperintah yang saya kirim kepadanya, yang hanya berisi dua jalur.
pir
@felbo Maaf. Saya salah membaca seluruh pertanyaan Anda. Silakan periksa edit terbaru saya untuk jawaban yang pada dasarnya adalah penulisan ulang seluruh jawaban. Cukup yakin Anda tidak akan dapat mengekstraksi file individual dari file GZip yang Anda miliki saat ini, tetapi saya jelaskan bagaimana Anda dapat membuat arsip GZipped yang benar yang mempertahankan struktur direktori dengan menggunakan TAR.
JakeGould
Saya benci Linux beberapa kali .. Sepertinya tidak ada cara lain, terima kasih.
pir