Bagaimana saya bisa membuat tar terkompresi di bawah sinar matahari solaris?

11

Saya masuk ke Sun Solaris OS. Saya ingin membuat dan mengekstrak file tar terkompresi. Saya mencoba perintah UNIX normal ini:

tar -cvzf file.tar.gz directory1

Gagal menjalankan di Sun OS dengan kesalahan berikut

bash-3.2$ tar -cvzf file.tar.tz directory1
tar: z: unknown function modifier
Usage: tar {c|r|t|u|x}[BDeEFhilmnopPqTvw@[0-7]][bfk][X...] [blocksize] [tarfile] [size] [exclude-file...] {file | -I include-file | -C directory file}...
Girish Sunkara
sumber
2
Mengapa menurut Anda itu perintah UNIX yang normal?
schaiba
Saya pikir Anda perlu meluangkan waktu membaca tentang perbedaan antara Unixes Linux dan alat GNU.
coteyr
4
Ketika mereka menambahkan zbendera itu ke tar GNU, kami kehilangan contoh terbaik kami untuk mengajar orang cara berpikir logis dan membangun saluran pipa ...

Jawaban:

27

Untuk menghindari pembuatan file perantara sementara Anda dapat menggunakan perintah ini

tar cvf - directory1|gzip -c >file.tar.gz
Romeo Ninov
sumber
2
Ini memiliki potensi keuntungan bahwa beberapa proses dapat terjadi secara paralel.
psmears
Apakah f -diperlukan, atau apakah Solaris tarmenampilkan stdout secara default?
Tandai
2
@ Mark: Menurut halaman manual , "Jika fdihilangkan, tarakan menggunakan perangkat yang ditunjukkan oleh TAPEvariabel lingkungan, jika diatur; jika tidak, itu akan menggunakan nilai default yang ditentukan dalam /etc/default/tar." Jadi, tidak, sepertinya Anda tidak bisa berasumsi bahwa f -itu tidak diperlukan.
Ilmari Karonen
@Romeo: Terima kasih atas jawabannya, saya merasa berguna. Bisakah Anda menjelaskan mengapa "-" diperlukan antara cvf dan nama direktori? Selain itu, saya mencoba perintah Anda pada beberapa OS - Solaris 10, 11.4, Linux (RHEL, CentOS, Oracle, dll.) Dan bekerja secara konsisten. Saya juga meninjau halaman tar tar masing-masing - mengapa cara di atas bekerja di Linux tanpa "-" sebelum cvf? Saya berharap Linux membutuhkan sesuatu seperti "tar -cvf ...." Terima kasih lagi untuk jawabannya.
rc1
@ rc1, tanda hubung dalam tar berarti Anda mengatur file output menjadi STDOUT. Ada dua gaya parameter, BSD dan SYSV. Dan Linux tar bekerja dengan keduanya (dengan dan tanpa tanda hubung sebelum cvf)
Romeo Ninov
10

Sepertinya Solaris's tartidak tahu cara mengompres. Jadi lakukan saja secara manual:

tar -cvf file.tar directory1 && gzip file.tar

Itu semua yang dilakukan oleh -zperpindahan GNU tar. Perintah di atas akan menghasilkan file.tar.gz.

terdon
sumber
Ini akan berfungsi (selama Anda memiliki cukup ruang disk cadangan untuk menyimpan file.tararsip tidak terkompresi menengah ), tetapi tidak perlu lambat dan boros ruang disk. Saya tidak dapat memikirkan situasi di mana ini lebih disukai daripada jawaban Romeo Ninov .
Ilmari Karonen
1
@IlmariKaronen juga tidak bisa. Aku hanya memikirkan ini dulu.
terdon
2

Periksa apakah Anda sudah SUNWgtarmenginstal. Ini versi GNU tardan menyediakan /usr/sfw/bin/gtaryang akan memungkinkan penggunaan opsi GNU untuk tar.

MikeA
sumber
-1

Silakan coba perintah di bawah ini

tar -cvf file.tar directory1 && gzip file.tar

(untuk zip file pada solaris)

gunzip file.tar.gz

(untuk unzip)

Nilesh Varshney
sumber
1
Ini tidak menambahkan banyak di luar jawaban sebelumnya
Jeff Schaller
Itu juga hanya membuang seluruh file tar (termasuk semua biner di header) ke terminal, bukannya membatalkan pengarsipan file. Anda mungkin perlu mengatur ulang terminal sesudahnya.
Paul_Pedant