Sebagai pengembang Windows, mungkin saya melewatkan sesuatu yang berbau budaya di komunitas Linux, tetapi itu selalu membuat saya bingung.
Saat mengunduh sesuatu, file tersebut pertama kali dimasukkan ke dalam .tar
arsip kemudian di- zip . Mengapa proses dua langkah? Tidak zipping mencapai file pengelompokan? Apakah ada manfaat lain yang tidak saya sadari?
Jawaban:
bzip
dangzip
mengerjakan satu file, bukan grup file. Biasa tuazip
(danpkzip
) beroperasi pada kelompok file dan memiliki konsep arsip built-in.Filosofi * nix adalah salah satu alat kecil yang melakukan pekerjaan tertentu dengan sangat baik dan dapat digabungkan bersama. Itulah mengapa ada dua alat di sini yang memiliki tugas khusus, dan dirancang agar cocok satu sama lain. Hal ini juga berarti Anda dapat menggunakan tar ke file kelompok dan kemudian Anda memiliki pilihan alat kompresi (
bzip
,gzip
, dll).sumber
tar
arsip: Dukungan izin sistem file Linux . Apa yang akan terjadi jika Anda mengunduh paket Debian, manajer paket Anda menginstalnya, tetapi tidak ada file yang dapat dieksekusi yang dapat dieksekusi? Itulah alasan sebenarnya mengapa semua orang menggunakan tarball ...;)Perbedaan penting terletak pada sifat kedua jenis arsip tersebut.
File TAR lebih dari sekadar rangkaian konten file dengan beberapa header, sedangkan gzip dan bzip2 adalah kompresor aliran yang, dalam tarball, diterapkan ke seluruh penggabungan.
File ZIP adalah rangkaian file yang dikompresi secara individual, dengan beberapa header. Sebenarnya, algoritme DEFLATE digunakan oleh zip dan gzip, dan dengan penyesuaian biner yang sesuai, Anda dapat mengambil muatan aliran gzip dan memasukkannya ke dalam file zip dengan entri header dan kamus yang sesuai.
Ini berarti bahwa dua jenis arsip yang berbeda memiliki keuntungan yang berbeda. Untuk koleksi besar file kecil, TAR yang diikuti oleh kompresor aliran biasanya akan menghasilkan rasio kompresi yang lebih tinggi daripada ZIP karena kompresor aliran akan memiliki lebih banyak data untuk membangun frekuensi kamusnya, dan dengan demikian dapat memeras informasi yang lebih berlebihan. Di sisi lain, kesalahan (file-length-melestarikan) dalam file ZIP hanya akan merusak file-file yang data terkompresnya terpengaruh. Biasanya, kompresor aliran tidak dapat memulihkan kesalahan di tengah aliran. Dengan demikian, file ZIP lebih tahan terhadap korupsi, karena bagian dari arsip masih dapat diakses.
sumber
Aneh bahwa tidak ada orang lain yang menyebutkan bahwa versi GNU modern
tar
memungkinkan Anda mengompres saat Anda membundel:Anda juga dapat menggunakan kompresor pilihan Anda asalkan mendukung opsi '
-c
' (ke stdout, atau dari stdin) dan '-d
' (dekompresi):Ini akan memungkinkan Anda untuk menentukan kompresor alternatif.
[ Ditambahkan : Jika Anda mengekstrak dari
gzip
ataubzip2
memampatkan file, GNU secaratar
otomatis mendeteksi ini dan menjalankan program yang sesuai. Artinya, Anda dapat menggunakan:dan ini akan ditangani dengan benar. Jika Anda menggunakan kompresor non-standar, maka Anda perlu menentukannya saat Anda melakukan ekstraksi.]
Alasan pemisahan, seperti dalam jawaban yang dipilih, pemisahan tugas. Antara lain, itu berarti bahwa orang dapat menggunakan program '
cpio
' untuk mengemas file (bukantar
) dan kemudian menggunakan kompresor pilihan (pada suatu waktu, kompresor yang disukai adalahpack
, kemudiancompress
(yang jauh lebih efektif daripadapack
), dan kemudiangzip
yang berputar mengelilingi kedua pendahulunya, dan sepenuhnya kompetitifzip
(yang telah di-porting ke Unix, tetapi tidak asli di sana), dan sekarangbzip2
yang, menurut pengalaman saya, biasanya memiliki keunggulan 10-20%gzip
.[ Ditambahkan : seseorang mencatat dalam jawaban mereka yang
cpio
memiliki konvensi lucu. Itu benar, tetapi sampai GNUtar
mendapatkan opsi yang relevan ('-T -
'),cpio
adalah perintah yang lebih baik ketika Anda tidak ingin mengarsipkan semua yang ada di bawah direktori tertentu - Anda sebenarnya dapat memilih dengan tepat file mana yang diarsipkan. Sisi negatifnyacpio
adalah Anda tidak hanya dapat memilih file - Anda harus memilihnya. Masih ada satu tempat di manacpio
skor; itu dapat melakukan salinan in-situ dari satu hierarki direktori ke yang lain tanpa penyimpanan perantara:Kebetulan, opsi '
-depth
' aktiffind
penting dalam konteks ini - opsi ini menyalin konten direktori sebelum mengatur izin pada direktori itu sendiri. Ketika saya memeriksa perintah sebelum memasukkan penambahan pada jawaban ini, saya menyalin beberapa direktori read-only (izin 555); ketika saya pergi untuk menghapus salinan tersebut, saya harus melonggarkan izin pada direktori sebelum 'rm -fr /new/place
' dapat selesai. Tanpa-depth
opsi tersebut,cpio
perintah tersebut akan gagal. Saya hanya mengingat kembali ini ketika saya pergi untuk melakukan pembersihan - rumus yang dikutip otomatis bagi saya (terutama karena banyak pengulangan selama bertahun-tahun). ]sumber
Lucunya, Anda bisa mendapatkan perilaku yang tidak diantisipasi oleh pencipta
tar
dangzip
. Sebagai contoh, Anda tidak hanya dapat meng-gzip sebuah file tar, Anda juga dapat meng-gzip file tar, untuk menghasilkan sebuahfiles.gz.tar
(ini secara teknis akan lebih mendekati carapkzip
kerjanya). Atau Anda dapat memasukkan program lain ke dalam pipeline, misalnya beberapa kriptografi, dan Anda dapat memilih urutan tarring, gzipping, dan enkripsi sewenang-wenang. Siapa pun yang menulis program kriptografi tidak harus memiliki ide sedikit pun bagaimana programnya akan digunakan, yang perlu dia lakukan hanyalah membaca dari input standar dan menulis ke output standar.sumber
Di dunia Unix, sebagian besar aplikasi dirancang untuk melakukan satu hal, dan melakukannya dengan baik. Utilitas zip paling populer di Unix, gzip dan bzip2, hanya melakukan kompresi file. tar melakukan penggabungan file. Menyalurkan keluaran tar ke dalam utilitas kompresi akan melakukan apa yang diperlukan, tanpa menambahkan kerumitan yang berlebihan pada perangkat lunak mana pun.
sumber
Alasan lain mengapa ini sangat umum adalah bahwa tar dan gzip ada di hampir seluruh basis instalasi * NIX di luar sana. Saya yakin ini mungkin satu-satunya alasan terbesar. Itu juga mengapa file zip sangat lazim di Windows, karena dukungan sudah ada di dalamnya, terlepas dari rutinitas superior di RAR atau 7z.
GNU tar juga memungkinkan Anda untuk membuat / mengekstrak file-file ini dari satu perintah (satu langkah):
tar -cfvj destination.tar.bz2 *.files
tar -cfvz destination.tar.gz *.files
Ekstrak Arsip: (bagian -C adalah opsional, defaultnya ke direktori saat ini)
tar -xfvj archive.tar.bz2 -C destination_path
tar -xfvz archive.tar.gz -C destination_path
Ini adalah apa yang saya telah berkomitmen untuk mengingat selama bertahun-tahun saya di Linux dan baru-baru ini di Nexenta (OpenSolaris).
sumber
Saya pikir Anda mencari lebih banyak konteks sejarah untuk ini. Zip asli untuk satu file. Tar digunakan untuk menempatkan banyak file ke dalam satu file. Oleh karena itu tarring dan zipping adalah proses dua langkah. Mengapa masih begitu dominan saat ini adalah dugaan siapa pun.
Dari wikipedia untuk Tar_ (file_format)
sumber
tar adalah UNIX karena UNIX adalah tar
Menurut pendapat saya, alasan masih menggunakan
tar
hari ini adalah karena itu adalah salah satu kasus (mungkin jarang) di mana pendekatan UNIX membuatnya sempurna sejak awal.Melihat lebih dekat pada tahapan yang terlibat dalam pembuatan arsip Saya harap Anda setuju bahwa cara pemisahan tugas yang berbeda terjadi di sini adalah filosofi UNIX yang terbaik:
salah satu alat (
tar
untuk memberikan nama di sini) khusus dalam mentransformasikan setiap pemilihan file, direktori dan link simbolik termasuk semua meta-data yang relevan seperti cap waktu, pemilik dan hak akses ke dalam satu aliran byte.dan hanya alat lain secara sewenang-wenang dipertukarkan (
gzip
bz2
xz
untuk nama hanya beberapa pilihan) yang transformasi setiap input stream byte ke lain (mudah-mudahan) output stream yang lebih kecil.Menggunakan ini dan pendekatan memberikan beberapa manfaat bagi pengguna serta pengembang:
diperpanjang Membiarkan pasangan
tar
dengan setiap algoritma kompresi yang sudah ada atau setiap algoritma kompresi namun masih dikembangkan tanpa harus perubahan apapun pada innertar
sama sekali.Segera setelah alat kompresi "hyper-zip-utra" atau yang lebih baru keluar, Anda sudah siap untuk menggunakannya dengan merangkul pelayan baru Anda dengan seluruh kekuatan
tar
.stabilitas
tar
telah banyak digunakan sejak awal tahun 80-an diuji dan dijalankan pada banyak sistem operasi dan mesin.Mencegah kebutuhan untuk menemukan kembali roda dalam mengimplementasikan kepemilikan penyimpanan, izin, cap waktu dan sejenisnya berulang kali untuk setiap alat pengarsipan baru tidak hanya menghemat banyak waktu (jika tidak dihabiskan) dalam pengembangan, tetapi juga menjamin keandalan yang sama untuk setiap aplikasi baru.
konsistensi Antarmuka pengguna tetap sama sepanjang waktu.
Tidak perlu diingat bahwa untuk memulihkan izin menggunakan alat A, Anda harus memberikan opsi
--i-hope-you-rember-this-one
dan menggunakan alat B yang harus Anda gunakan--this-time-its-another-one
saat menggunakan alat C itu `--hope-you-didnt-try-with-tool-as-switch.Sedangkan dalam menggunakan alat D Anda akan benar-benar mengacaukannya jika Anda tidak menggunakannya
--if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now
.sumber
tar sangat populer karena alasan sejarah. Ada beberapa alternatif yang tersedia. Beberapa dari mereka ada hampir sepanjang tar, tetapi tidak bisa melampaui tar dalam popularitas karena beberapa alasan.
Keuntungan utama (dan sisi negatif) dari tar adalah ia tidak memiliki header file, atau direktori pusat konten. Oleh karena itu, selama bertahun-tahun tidak pernah mengalami keterbatasan dalam ukuran file (hingga dekade ini di mana batas 8 Gb pada file di dalam arsip menjadi masalah, diselesaikan bertahun-tahun yang lalu).
Jelas satu kelemahan tar.gz (atau ar.Z dalam hal ini), yaitu Anda harus membuka kompresi seluruh arsip untuk mengekstrak satu file dan mendaftar isi arsip, tidak pernah menyakiti orang cukup untuk membuat mereka cacat dari tar dalam jumlah yang signifikan .
sumber
gzip dan bzip2 hanyalah sebuah kompresor, bukan perangkat lunak pengarsipan. Makanya, kombinasinya. Anda membutuhkan perangkat lunak tar untuk menggabungkan semua file.
ZIP itu sendiri, dan RAR juga merupakan kombinasi dari dua proses tersebut.
sumber
Biasanya di dunia * nux, kumpulan file didistribusikan sebagai tarball dan kemudian di-gzip secara opsional. Gzip adalah program kompresi file sederhana yang tidak melakukan bundling file seperti yang dilakukan tar atau zip.
Pada suatu waktu, zip tidak menangani dengan baik beberapa hal yang dianggap normal oleh sistem file tar dan unix Unix, seperti symlink, file kasus campuran, dll. Saya tidak tahu apakah itu berubah, tapi itulah mengapa kami menggunakan tar.
sumber
Tar = Mengelompokkan file dalam 1 file
GZip = Zip file
Mereka membagi proses menjadi 2. Itu saja.
Di lingkungan Windows mungkin Anda lebih terbiasa menggunakan WinZip atau WinRar yang melakukan Zip. Proses Zip dari perangkat lunak ini mengelompokkan file dan zip tetapi Anda tidak melihat proses itu.
sumber
Untuk alasan yang sama mengapa pengguna mac menyukai gambar disk: Mereka adalah cara yang sangat nyaman untuk mengarsipkan barang dan kemudian menyebarkannya, naik- / unduh atau email dll.
Dan lebih mudah digunakan dan lebih portabel daripada ritsleting IMHO.
sumber
Pada masa Altos-XENIX saya (1982) kami mulai menggunakan tar (pengarsip pita) untuk mengekstrak file dari 5 1/4 disket atau pita streaming serta menyalinnya ke media ini. Fungsinya sangat mirip dengan perintah BACKUP.EXE dan RESTORE.EXE di DOS 5.0 dan 6.22 sebagai suplemen, memungkinkan Anda untuk menjangkau banyak media jika tidak bisa muat hanya di satu. Kekurangannya adalah jika salah satu dari beberapa media mengalami masalah, semuanya tidak berharga. tar dan dd berasal dari UNIX SYstem III dan tetap menjadi utilitas rilis standar dengan OS mirip UNIX mungkin karena alasan kompatibilitas mundur.
sumber
Tar bukan hanya format file, tetapi juga format kaset. Kaset menyimpan data sedikit demi sedikit. Setiap implementasi penyimpanan bersifat khusus. Tar adalah metode yang Anda gunakan untuk mengambil data dari disk, dan menyimpannya ke tape dengan cara yang dapat diambil orang lain tanpa program kustom Anda.
Kemudian, program kompresi datang, dan * nix masih hanya memiliki satu metode untuk membuat satu file yang berisi banyak file.
Saya percaya itu hanya inersia yang melanjutkan tren tar.gz. Pkzip dimulai dengan kompresi dan pengarsipan dalam satu gerakan, tetapi kemudian sistem DOS biasanya tidak memiliki tape drive yang terpasang!
Dari wikipedia untuk Tar_ (file_format)
sumber
Sebagai Pengembang Windows, dapat dimengerti bagaimana tarball tampak aneh. Kata
tar
singkatan dari Tape Archive. Pikirkan perekam pita gulungan-ke-gulungan.Di dunia Windows, program biasanya diinstal dengan
setup.exe
atauinstall.exe
yang menjalankan semua jenis sihir di registri, membuat direktori dan menginstal.dll
file (Dynamic Link Library).Di Linux, Ubuntu khususnya dari pengalaman saya sendiri, manajer paket menangani penggunaan aplikasi dan menginstalnya hampir sepanjang waktu . Di Ubuntu, pengembang membuat paket yang diakhiri dengan
.deb
(Debian, yang menjadi dasar Ubuntu). Sintaks dasar untuk menginstal.deb
adalah:Meskipun ini relatif mudah bagi pengguna, banyak pekerjaan bagi pengembang untuk membuat file
.deb
paket dan mengasosiasikan PPA.Metode yang lebih mudah bagi pengembang adalah dengan membuat tarball. Kemudian beban instalasi dibagikan oleh pengguna akhir. Mereka harus:
.tar.gz
).apt
database (pikirkan daftar program yang diinstal Windows) yang dapat dicadangkan.Karena jawaban lain sudah menyatakan untuk pertanyaan lain yang Anda ajukan, Anda BISA membuat tarball dan mengompres data pada saat yang bersamaan. Proses dua lulus TIDAK diperlukan.
sumber