Buat arsip dengan perintah "gzip"

12

Saya harus membuat arsip dengan perintah gzip (bukan tar - itu perlu) dan arsip harus berisi file dari direktori lain - misalnya, / etc. Saya mencoba menggunakan perintah

gzip myetc.gz /etc

Tapi itu tidak berhasil.

Elisia Light
sumber
3
gziptidak zip. Mereka adalah alat berbeda yang bekerja secara berbeda.
roaima
3
gziphanya kompresor aliran. Itu tidak tahu tentang file atau direktori.
3
Kenapa kamu tidak bisa menggunakan tar?
marcelm
Jika Anda tidak memiliki tar, apakah Anda memiliki cpio?
Rup
2
Anda mengatakan ingin membuat arsip, tetapi Anda tidak bisa menggunakan tar. Anda tahu bahwa bagian dari kata "tar" berasal dari "ARchive". Maksud saya, itu raison d'etre. Siapa atau apa yang ingin mengecualikan "tar" dari proses pembuatan arsip? Pada dasarnya Anda bertanya bagaimana cara menggerakkan sekrup dengan palu (bukan obeng - itu perlu).
Mike S

Jawaban:

6

Gzip hanya berfungsi dengan satu file, atau aliran - data yang disalurkan ke gzip. Jadi pertama-tama Anda perlu membuat satu file, seperti dengan tar, dan kemudian Anda bisa gzip itu. Opsi lainnya adalah gzip semua file individual, dan kemudian tar itu menjadi satu file.

Kedua solusi ini bodoh dan tidak boleh digunakan. Anda harus menggunakan tar dengan opsi kompresi bawaan dan lakukan semuanya dalam satu perintah.

SPRBRN
sumber
1
Mengapa metode pertama harus bodoh? Ini adalah cara yang biasa untuk menghasilkan .tar.gz...
rexkogitans
Yah bodoh mungkin bukan istilah yang tepat, tetapi alih-alih menggunakan gzip, jika Anda dapat menggunakan tar dengan opsi c. Ini lebih sederhana, dan saya tidak percaya piping gzip memiliki keuntungan.
SPRBRN
Gzip dapat bekerja untuk banyak file dengan opsi -r, tetapi akan membuat .gz baru untuk setiap file di folder.
Luciano Andress Martini
1
@rexkogitans - itu bodoh dengan cara yang sama seperti itu cat filename | grep blahbodoh. Ini juga jauh kurang optimal karena akan menggunakan ruang sementara yang besar. Saya tidak tahu apakah saya akan menyebutnya bodoh sebanyak tidak beralasan, suboptimal, dan umumnya hanya semacam jelek. Yah, kerja bodoh juga.
Mike S
Oh, sekarang aku mengerti apa yang sebodoh itu. Tidak, `tar -czf` adalah jalan yang harus ditempuh karena tidak melibatkan yang tidak berguna fork().
rexkogitans
13

gzipbekerja dengan file, bukan direktori. Karenanya untuk membuat arsip direktori yang perlu Anda gunakan tar(yang akan membuat tarball tunggal dari banyak file):

tar cvf myetc.tar /etc

atau, untuk arsip yang di-gzip:

tar cvzf myetc.tar.gz /etc
dr_
sumber
2
jika seseorang memiliki sistem "kuno" tanpa opsi "-z", mereka dapat melakukan: cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz (jika Anda bertanya-tanya mengapa saya tar "./etc" bukan "/ etc", itu karena pada sistem yang lebih tua, ketika menggunakan tar xvf, itu akan ditampilkan ke / etc dan menimpa itu ... [atau Anda harus menggunakan "pax" dalam kasus itu]). Perintah terbalik, yaitu untuk mengekstrak arsip itu di bawah "/ suatu tempat": cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
Olivier Dulac
1

Jika Anda benar-benar tidak memiliki tar yang tersedia, Anda dapat menggunakan gzip untuk membuat cadangan direktori menggunakan opsi (-r - secara rekursif), tetapi mungkin itu bukan apa yang Anda harapkan ...

Pertama, Anda perlu menyalin direktori Anda ke nama lain, jika Anda ingin menjaga direktori asli tidak tersentuh.

#cp -a directory my_gzip_alone_backup

Kedua, Anda akan memampatkan semua file pada direktori secara rekursif (-r).

#gzip -r my_gzip_alone_backup

Sekarang mari kita lihat di dalam my-gzip-alone-backup. Anda tidak akan memiliki satu file myfile.gz seperti yang Anda harapkan, tetapi banyak file gzip secara rekursif. Tapi itu tidak baik untuk melakukannya dengan dll karena symlink ...

Untuk membuka direktori, logika yang sama dapat diterapkan dengan gunzip.

Cara lain adalah dengan mengubah direktori menjadi satu file, jika Anda tidak memiliki tar untuk melakukan itu, tetapi memiliki util dd, seperti ditunjukkan dalam posting ini: /ubuntu/626634/converting-a -file-ke-direktori

Luciano Andress Martini
sumber