Saya tahu tar
itu dibuat untuk arsip tape kembali pada hari itu, tetapi hari ini kami memiliki format file arsip yang menggabungkan file dan melakukan kompresi dalam format file logis yang sama.
Pertanyaan:
Apakah ada penalti kinerja selama tahap agregasi / kompresi / dekompresi untuk menggunakan
tar
enkapsulasi dalamgzip
ataubzip2
, bila dibandingkan dengan menggunakan format file yang melakukan agregasi dan kompresi dalam struktur data yang sama? Asumsikan runtime kompresor yang dibandingkan adalah identik (mis. Gzip dan Deflate serupa).Apakah ada fitur
tar
format file yang format file lain, seperti.7z
dan.zip
tidak miliki?Karena
tar
format file yang lama, dan format file yang lebih baru ada saat ini, mengapatar
(apakah dienkapsulasigzip
,bzip2
atau bahkan yang baruxz
) masih begitu banyak digunakan hari ini di GNU / Linux, Android, BSD, dan sistem operasi UNIX lainnya, untuk file transfer, sumber program dan unduhan biner, dan kadang-kadang bahkan sebagai format manajer paket?
tar xvzf
ini lebih sulit daripada7z -x
...tar xvzf
, data yang tidak terkompresi tidak ditulis ke hard disk dalam.tar
format! Anda benar bahwa jika Anda menjalankangunzip blah.tar.gz
dan kemudiantar xf blah.tar
, itu akan menulis data ke disk dua kali (sekali sebagai .tar dan lagi sebagai file di sistem file), tetapi tidak ada yang benar-benar melakukannya dengan cara itu. Thetar xzf
penggunaan sebuah UNIX Pipe (pada dasarnya salinan memori) untuk mentransfer data terkompresi darigzip
(atau kompresor apa pun) untuktar
, sehingga data tersebut tidak ditulis ke disk dalam.tar
format yang.tar
(terutama terkompresi) berperilaku buruk ketika menyangkut korupsi data. Redundansi kecil / data pemulihan yang ditambahkan oleh format modern bernilai emasJawaban:
Bagian 1: Kinerja
Berikut ini adalah perbandingan dua alur kerja terpisah dan apa yang mereka lakukan.
Anda memiliki file di disk
blah.tar.gz
yang, katakanlah, 1 GB data yang dikompresi gzip yang, ketika tidak dikompresi, menempati 2 GB (jadi rasio kompresi 50%).Cara Anda membuat ini, jika Anda melakukan pengarsipan dan kompresi secara terpisah, akan menjadi:
Ini akan menghasilkan di
blah.tar
mana hanya kumpulan darifiles ...
dalam bentuk yang tidak terkompresi.Maka Anda akan melakukannya
Ini akan membaca isi
blah.tar
dari disk, kompres mereka melalui algoritma kompresi gzip, tulis kontennyablah.tar.gz
, lalu batalkan tautan (hapus) file tersebutblah.tar
.Sekarang, mari kita dekompresi!
Cara 1
Anda punya
blah.tar.gz
, dengan satu atau lain cara.Anda memutuskan untuk menjalankan:
Ini akan
blah.tar.gz
.gzip
dekompresor dalam memori.blah.tar
pada disk dan ulangi sampai semua data terkompresi dibaca.blah.tar.gz
.Sekarang, Anda memiliki
blah.tar
pada disk, yang tidak terkompresi tetapi berisi satu atau lebih file di dalamnya, dengan overhead struktur data yang sangat rendah. Ukuran file mungkin beberapa byte lebih besar dari jumlah semua data file.Kamu lari:
Ini akan
blah.tar
dantar
struktur data format file, termasuk informasi tentang izin file, nama file, direktori, dll.Total data yang kami BACA dari disk dalam proses ini adalah 1 GB (untuk gunzip) + 2 GB (untuk tar) = 3 GB.
Total data yang kami WROTE ke disk dalam proses ini adalah 2 GB (untuk gunzip) + 2 GB (untuk tar) + beberapa byte untuk metadata = sekitar 4 GB.
Cara 2
Anda punya
blah.tar.gz
, dengan satu atau lain cara.Anda memutuskan untuk menjalankan:
Ini akan
blah.tar.gz
, satu blok pada satu waktu, ke dalam memori.gzip
dekompresor dalam memori.tar
parser format file, yang akan membaca informasi tentang metadata, dll dan file data terkompresi.tar
file parser, itu akan MENULIS data yang tidak terkompresi ke disk, dengan membuat file dan direktori dan mengisinya dengan konten yang tidak terkompresi.Total data yang kami BACA dari disk dalam proses ini adalah 1 GB data terkompresi, titik.
Total data yang kami MENULIS ke disk dalam proses ini adalah 2 GB data yang tidak terkompresi + beberapa byte untuk metadata = sekitar 2 GB.
Jika Anda perhatikan, jumlah disk I / O di Way 2 adalah identik dengan disk I / O yang dilakukan oleh, katakanlah,
Zip
atau 7-Zip program, menyesuaikan untuk setiap perbedaan rasio kompresi.Dan jika rasio kompresi menjadi perhatian Anda, gunakan
Xz
kompresor untuk merangkumtar
, dan Anda memiliki arsip TAR LZMA2 , yang sama efisiennya dengan algoritma paling canggih yang tersedia untuk 7-Zip :-)Bagian 2: Fitur
tar
menyimpan izin Unix dalam metadata file-nya, dan sangat terkenal dan diuji untuk berhasil mengemas direktori dengan semua jenis izin yang berbeda, tautan simbolik, dll. Ada lebih dari beberapa contoh di mana seseorang mungkin perlu menggumpal banyak file ke dalam satu file atau aliran, tetapi tidak perlu memampatkannya (meskipun kompresi berguna dan sering digunakan).Bagian 3: Kompatibilitas
Banyak alat didistribusikan dalam bentuk sumber atau biner sebagai .tar.gz atau .tar.bz2, karena itu adalah format file "common common denominator": seperti kebanyakan pengguna Windows memiliki akses ke dekompresor .zip atau .rar, kebanyakan instalasi Linux , bahkan yang paling dasar, akan memiliki akses ke setidaknya tar dan gunzip, tidak peduli berapa usia atau dikupas. Bahkan firmware Android memiliki akses ke alat-alat ini.
Proyek-proyek baru yang menargetkan pemirsa yang menjalankan distribusi modern mungkin sangat baik mendistribusikan dalam format yang lebih modern, seperti .tar.xz (menggunakan format kompresi Xz (LZMA), yang kompres lebih baik daripada gzip atau bzip2), atau .7z, yang mirip dengan format file ZIP atau RAR yang dikompres dan menentukan tata letak untuk mengenkapsulasi beberapa file ke dalam satu file.
Anda tidak melihat .7z lebih sering digunakan karena alasan yang sama bahwa musik tidak dijual dari toko unduhan daring dalam format baru seperti Opus , atau video di WebM . Kompatibilitas dengan orang yang menjalankan sistem kuno atau yang sangat mendasar.
sumber
tar
cocok dalam ekosistem pengarsipan (yaitu, untuk menggabungkan file bersama-sama, memberikan peningkatan kinerja dan beberapa manfaat lain seperti penghematan izin), tetapi itu tidak membahas mengapa alternatif modern sepertidar
tidak digunakan. Dengan kata lain, jawaban ini membenarkan penggunaan agregator file, tetapi bukan daritar
perangkat lunak itu sendiri.Ini telah dijawab pada Stack Overflow .
Banyak alat didistribusikan dalam bentuk sumber atau biner sebagai .tar.gz atau .tar.bz2, karena itu adalah format file "common common denominator": seperti kebanyakan pengguna Windows memiliki akses ke dekompresor .zip atau .rar, kebanyakan instalasi Linux , bahkan yang paling dasar, akan memiliki akses ke setidaknya
tar
dangunzip
, tidak peduli berapa usia atau dikupas. Bahkan firmware Android memiliki akses ke alat-alat ini.Proyek-proyek baru yang menargetkan pemirsa yang menjalankan distribusi modern mungkin sangat baik mendistribusikan dalam format yang lebih modern, seperti
.tar.xz
(menggunakan format kompresi Xz ( LZMA ), yang kompres lebih baik daripada gzip atau bzip2), atau 0,7z, yang mirip dengan ZIP atau RAR format file yang dikompres dan menentukan tata letak untuk mengenkapsulasi banyak file menjadi satu file.Anda tidak melihat .7z lebih sering digunakan karena alasan yang sama bahwa musik tidak dijual dari toko unduhan daring dalam format baru seperti Opus , atau video di WebM . Kompatibilitas dengan orang yang menjalankan sistem kuno atau yang sangat mendasar adalah penting.
sumber
tar.Z
(kompres / uncompress). Kemajuan utilitas telah menjadi aliran konstan (tidak ada permainan yang dimaksudkan) dari perubahan & peningkatan: Z => zip => gz => bz2 => 7z => xz (atau urutan apa pun yang Anda inginkan). Adapun peran tar, beberapa utilitas un / kompres saja, dan masih membutuhkan tar untuk bundel hierarki file.Tar memiliki banyak rangkaian operasi dan pengubah yang mengetahui semua tentang sistem file Unix. Ia tahu tentang izin Unix, tentang waktu yang berbeda terkait dengan file, tentang tautan keras, tentang tautan lunak (dan tentang kemungkinan tautan simbolik dapat memperkenalkan siklus dalam grafik sistem berkas), dan memungkinkan Anda menentukan beberapa cara berbeda untuk mengelola semua data ini .
Apakah Anda ingin data yang diekstraksi untuk mempertahankan waktu akses file? Tar bisa melakukannya. Untuk mempertahankan izin? Tar bisa melakukannya.
Apakah Anda ingin mempertahankan tautan simbolik sebagai tautan simbolik? Tar melakukan itu secara default. Ingin menyalin target saja? Tar bisa melakukannya.
Apakah Anda ingin memastikan data hardlink hanya disimpan sekali (yaitu, untuk melakukan hal yang benar)? Tar melakukan itu.
Apakah Anda ingin menangani file jarang dengan baik? Tar bisa melakukannya.
Apakah Anda ingin data yang tidak terkompresi (mengapa?)? Tar bisa melakukannya. Untuk mengompres dengan gzip? Tar bisa melakukannya. Dengan bzip2? Tar bisa melakukannya. Dengan program kompresi eksternal yang sewenang-wenang? Tar bisa melakukannya.
Apakah Anda ingin menulis atau memulihkan ke / dari perangkat mentah? Format tar menangani itu dengan baik.
Apakah Anda ingin menambahkan file ke arsip yang ada? Tar bisa melakukannya. Membedakan dua arsip untuk melihat apa yang berubah? Tar bisa melakukannya. Untuk memperbarui hanya bagian-bagian dari arsip yang telah berubah? Tar bisa melakukannya.
Apakah Anda ingin memastikan bahwa Anda tidak mengarsipkan lebih dari satu sistem file? Tar bisa melakukannya.
Apakah Anda ingin mengambil hanya file yang lebih baru dari cadangan terakhir Anda? Tar bisa melakukannya.
Apakah Anda ingin mempertahankan nama atau nomor pengguna dan grup? Tar dapat melakukan salah satunya.
Apakah Anda perlu mempertahankan node perangkat (seperti file dalam
/dev
) sehingga setelah ekstraksi, sistem akan berjalan dengan benar? Tar bisa melakukannya.Tar telah berevolusi untuk menangani banyak dan banyak kasus penggunaan selama beberapa dekade dan benar-benar tahu banyak tentang hal-hal yang ingin dilakukan orang dengan sistem file Unix.
sumber
f -
dan pipa itu ke kompresor.tar
sangat sering untuk menyalin pohon sistem file dari satu tempat ke tempat lain dan mempertahankan izin, dll, dan kompresi dalam hal ini hanya membutuhkan siklus CPU tambahan. Misalnyatar cf - * | tar xf - -C /somewhere
.Anda mengacaukan dua proses pengarsipan dan kompresi yang berbeda .
Alasan menggunakan pengarsipan
Salah satu alasan untuk menggunakan pengarsipan tanpa kompresi, misalnya, jika banyak file disalin dari satu host ke yang lain. Perintah seperti berikut
dapat mempercepat banyak hal. Jika saya tahu bahwa file tidak dapat dikompresi atau jika SSH diatur dengan kompresi, ini dapat menghemat waktu CPU. Tentu, seseorang dapat menggunakan alat kompresi yang lebih modern dengan fungsi pengarsipan dan mematikan kompresi. Keuntungannya
tar
adalah, saya dapat mengharapkannya tersedia di setiap sistem.Alasan menggunakan pengarsipan dengan kompresi gzip
Salah satu alasan yang saya gunakan
tar
dengangzip
adalah: kecepatan! Jika saya ingin mentransfer beberapa GiB file teks dari satu tempat ke tempat lain, saya tidak peduli tentang memeras byte terakhir, karena kompresi hanya digunakan untuk transit, bukan untuk penyimpanan jangka panjang. Dalam kasus-kasus yang saya gunakangzip
, yang tidak memaksimalkan CPU (berbeda dengan 7-Zip , misalnya), yang berarti bahwa saya I / O terikat lagi dan tidak terikat CPU. Dan lagi:gzip
dapat dianggap tersedia di mana-mana.Alasan untuk menggunakan
tar
mendukungscp
,rsync
dllIni berdetak
scp
jika Anda memiliki banyak file kecil untuk disalin (misalnya, direktori surat dengan ratusan ribu file).rsync
, luar biasa apa adanya, mungkin tidak tersedia di mana-mana. Selanjutnya,rsync
hanya benar-benar terbayar jika bagian dari file - atau versi yang lebih lama - sudah ada di tujuan. Untuk salinan awaltar
adalah yang tercepat, dengan kompresi atau tanpa, tergantung pada data aktual.sumber
tar cf - . | (cd ~/somewhere; tar xvf -)
. Sangat berguna tidak harus menunggu sampai indeks pusat ditulis (seperti misalnya dalam file zip).Menambahkan ke jawaban baik lainnya di sini, saya lebih suka kombinasi
tar
+gzip|bzip2|xz
terutama karena file-file terkompresi ini seperti aliran, dan Anda dapat menyalurkannya dengan mudah.Saya perlu mengompres file yang tersedia di internet. Dengan salah satu
zip
ataurar
format saya harus mengunduhnya terlebih dahulu dan kemudian mengompresnya. Dengantar.{gz,bz2,xz}
saya dapat mengunduh dan membuka kompresi dalam langkah yang sama, tanpa perlu memiliki arsip terkompresi secara fisik pada disk:Ini akan meninggalkan hanya file yang tidak terkompresi di disk saya, dan akan mempercepat seluruh proses, karena saya tidak menunggu waktu untuk mengunduh seluruh file dan setelah pengunduhan selesai, saya membuka kompres. Sebagai gantinya, saya membuka kompresi saat sedang mengunduh. Anda tidak dapat melakukan ini dengan
zip
ataurar
file.sumber
funzip
hanya mengekstrak file pertama di zipfile, tidak semua.tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
Ada beberapa alasan untuk tetap menggunakan (GNU) Tar.
Ini:
Jika daging sapi khusus Anda harus "mendekompresi" tarball sebelum dapat membaca isinya, maka Anda mungkin benar. WinRAR dan 7-Zip melakukannya secara otomatis. Namun, ada solusi sederhana untuk masalah ini seperti mendokumentasikan konten arsip dalam bentuk yang tidak terkompresi.
sumber
Format file seperti .zip memerlukan perangkat lunak untuk membaca bagian akhir file terlebih dahulu, untuk membaca katalog nama file. Sebaliknya, tar menyimpan informasi itu dengan aliran terkompresi.
Keuntungan dari cara tar adalah Anda dapat mendekompres data saat membacanya dari pipa yang tidak dapat dicari, seperti soket jaringan.
Keuntungan dari cara zip adalah bahwa, untuk file statis pada disk, Anda dapat menelusuri konten dan metadata tanpa mendekompresi seluruh arsip terlebih dahulu.
Keduanya memiliki kegunaannya, tergantung pada apa yang Anda lakukan.
sumber
Tampaknya ada keengganan untuk menjawab semua pertanyaan Anda secara langsung, dengan preferensi yang jelas untuk menggunakan pertanyaan Anda sebagai titik awal untuk pemurnian. Jadi saya akan mencobanya.
Tidak. Faktanya karena tar dan gzip biasanya merupakan dua proses, Anda bahkan mendapatkan sedikit manfaat kecepatan multi-core yang tidak disediakan oleh pengarsip seperti zip Info-ZIP. Dalam hal rasio kompresi, tar + gzip biasanya akan terasa lebih baik daripada zip dengan deflate karena yang pertama dapat mengambil manfaat dari korelasi antara file, sedangkan yang terakhir mengkompres file secara terpisah. Manfaat kompresi tersebut diterjemahkan menjadi manfaat kecepatan saat mengekstraksi, karena arsip yang lebih dikompres akan terdekompresi dalam waktu yang lebih singkat.
Ya, tar dirancang untuk Unix, dan telah berevolusi selama bertahun-tahun untuk dapat secara tepat merekam dan mengembalikan setiap celah dan celah kecil yang aneh dari sistem file Unix, bahkan sistem file Mac OS X Unix yang lebih baru dan lebih ringan. zip dapat mempertahankan sebagian besar metadata seperti izin, waktu, pemilik, grup, dan tautan simbolik, tetapi masih belum semuanya. Sebagai contoh, baik zip maupun 7z tidak dapat mengenali atau memanfaatkan file yang jarang, juga tidak mengetahui atau tidak dapat memulihkan tautan keras.
Banyak jawaban bagus lainnya untuk itu. Yang terbaik adalah itu hanya bekerja , dan Anda dapat terus memperbaruinya ke format kompresi yang lebih baik (misalnya xz) dan masih menggunakan format tar yang sama dan bahkan utilitas tar yang dikompilasi sama. Jika Anda hanya ingin mengemas banyak hal, dan kemudian membongkar semuanya di ujung yang lain, maka ada sedikit alasan untuk menggunakan apa pun kecuali salah satu perangkat lunak tertua, terlengkap, dan paling banyak dibajak di luar sana.
Jika Anda ingin akses acak, pembaruan parsial, atau hal-hal lain yang perlu ditangani sedikit demi sedikit, atau Anda ingin dapat mengetahui apa yang ada di dalamnya tanpa membaca semuanya, maka Anda ingin menggunakan format yang berbeda.
sumber
Performa
Perbedaan besar adalah urutan kompresi dan pengarsipan dilakukan di.
tar
Arsip, maka secara opsional dapat mengirim arsip ke kompresor, danzip
membangun arsip, dan kompres data file dalam 32 potongan chb saat dimasukkan ke dalam arsip. Dengan memecah data file menjadi potongan-potongan kecil dan mengompresnya secara terpisah, ini memungkinkan Anda untuk mengekstrak file tertentu atau bagian file tanpa harus mendekompres semua yang ada di arsip sebelum itu. Itu juga mencegah kompresor dari membangun kamus yang sangat besar sebelum dihidupkan kembali. Ini berarti kompresi akan berjalan lebih cepat, tetapi tidak memberikan rasio sebagus mengompresi semuanya dengan ukuran kamus yang lebih besar.Anda dapat memvisualisasikannya dengan memikirkan dua file, di mana 500 byte pertama dari file kedua sama dengan 500 byte terakhir dari file pertama. Dengan
zip
metode ini, kompresor dihidupkan ulang untuk file kedua, jadi tidak ingat bahwa file pertama berakhir dengan data yang sama, sehingga tidak dapat menghapus data duplikat dari file kedua.Kepopuleran
Ada banyak format lain yang memiliki sejumlah kelebihan
tar
. 7-Zip tidak menyimpan izin file Unix, tetapidar
tidak, danzip
bisa, dan ketiganya menyimpan indeks, yang memungkinkan untuk penelusuran cepat, ekstraksi subset file, dan memperbarui file dalam arsip. Mereka juga dapat menggunakan CPU multi-core untuk kompresi.Alasan semua orang masih menggunakan
tar
adalah alasan yang sama semua orang masih menggunakan Windows, dan Flash : orang tidak suka perubahan. Tanpa alasan kuat untuk berubah, orang hanya berpegang teguh pada apa yang mereka ketahui.dar
tidak memberikan manfaat yang cukup untuk membenarkan penerbitan file dalam format ketika kebanyakan orang sudahtar
menginstal, dan sangat sedikit yang tahudar
, jadi inersia sederhana membuat kita tetap pada standar lama.sumber
Tar dibuat untuk melakukan backup full-fidelity backup dari filesystem Anda, bukan hanya untuk mentransfer file sekitar. Dengan demikian, utilitas tar adalah utilitas paling lengkap untuk membuat arsip yang mempertahankan semua hal penting tentang struktur sistem file Anda.
Ini termasuk semua fitur yang tidak ada dalam satu atau beberapa alat yang bersaing:
Ini juga memiliki
--one-file-system
opsi yang sangat berguna ketika membuat cadangan.Setiap kali fitur baru ditambahkan ke sistem file, dukungan akan ditambahkan ke yang
tar
pertama (atau bahkan secara eksklusif). Jadi ini terus menjadi cara paling kompatibel untuk menyimpan file.sumber
Kami memiliki banyak file terkompresi yang mengambang hari ini, MP3, JPG, Video, file tar.gz, paket JAR, RPM, DEB, dan sebagainya. Jika Anda perlu menggabungkan banyak ini ke dalam satu file untuk ditransfer, maka sangat berguna untuk memiliki utilitas 'tar' yang hanya membundel file-file tersebut tanpa berusaha mengompresnya.
Tidak hanya membuang waktu dan listrik untuk mencoba mengompres file yang dikompresi, tetapi sering menghasilkan file yang lebih besar dari aslinya.
Penggunaan lain itu adalah untuk meningkatkan tingkat kompresi. Misalnya, jika Anda 'tar' bundel file log dan kemudian gzip hasilnya, Anda mungkin menghasilkan file yang lebih kecil daripada jika Anda mengompres dulu, kemudian digabungkan dengan 'tar'. Dan tentu saja, menggunakan tar, Anda dapat memilih algoritma kompresi yang Anda inginkan, dan menentukan opsi untuk mengoptimalkan kompresi untuk use case khusus Anda.
Saya menemukan bahwa tar 'sangat relevan hari ini dan saya lebih suka menggunakan ZIP. Di kantor kami, semua orang dengan Windows telah menginstal 7-zip sehingga, bagi kami, file tar sepenuhnya kompatibel lintas platform.
sumber
tar
file yang tidak dikompresi dan ada alasan untuk itu.tar
menggunakan potongan yang sangat besar, artinya Anda mendapatkan banyak lapisan di akhir file. Untuk menghilangkan semua nol ini, hampir selalu bermanfaat untuk menggunakannyagzip
tanpa berpikir dua kali.Mungkin kita harus bertanya-tanya mengapa format file "baru" melakukan kompresi dan agregasi (dan saya akan menambahkan enkripsi) di mana tidak dibangun di tar dari awal, bukan alat yang sama sekali berbeda.
Seperti yang saya pahami, ada alasan historis (terkait dengan riwayat OS, paten "perlindungan", kemampuan pembatalan perangkat lunak untuk menjual alat, dll.).
Sekarang, seperti yang ditunjukkan oleh tanggapan lain, bahkan sekarang tar tidak jelas kalah dengan solusi lain dan mungkin lebih baik pada aspek-aspek lain seperti kemampuan untuk bekerja pada stream atau manajemen hak Unix.
Jika Anda membaca artikel wikipedia tentang tar, Anda dapat melihat fakta menarik lainnya. Artikel ini mengakui beberapa kekurangan tar ... tetapi tidak menyarankan menggunakan zip sebagai gantinya (benar-benar format zip tidak menyelesaikan kekurangan ini) tetapi DAR.
Saya akan mengakhiri dengan sentuhan pribadi. Beberapa waktu yang lalu saya harus membuat format file untuk menyimpan data yang dienkripsi. Menggunakan tar sebagai basis sangat praktis (yang lain membuat pilihan yang sama, misalnya tar adalah format agregasi internal untuk paket .deb). Jelas bagi saya bahwa mencoba mengompres data setelah enkripsi sama sekali tidak berguna, saya harus melakukan kompresi sebagai langkah independen sebelum enkripsi, dan saya tidak siap menggunakan enkripsi zip (saya ingin dua enkripsi kunci dengan kunci publik dan pribadi) . Menggunakan tar itu bekerja sangat mudah.
sumber
Saya terkejut tidak ada yang menyebutkan hal ini, tetapi salah satu alasan — bukan benar-benar keuntungan, tetapi keharusan — adalah untuk kompatibilitas ke belakang. Ada banyak sistem yang menjalankan perangkat lunak selama beberapa dekade yang mungkin membutuhkan
tar
pengarsipan. Tidaklah efektif untuk menyewa seseorang untuk "memperbaiki" semua sistem yang lama.sumber
tar adalah UNIX karena UNIX adalah tar
Menurut pendapat saya alasan masih menggunakan
tar
hari ini adalah bahwa itu adalah salah satu (mungkin jarang) kasus di mana pendekatan UNIX membuatnya sangat benar dari awal.Melihat lebih dekat pada tahap-tahap yang terlibat dalam menciptakan arsip, saya harap Anda akan 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 mengubah setiap input stream byte ke lain output stream (mudah-mudahan) lebih kecil.Menggunakan pendekatan seperti itu dan memberikan sejumlah manfaat bagi pengguna maupun pengembang:
extensibility Memungkinkan untuk dipasangkan
tar
dengan algoritma kompresi apa pun yang sudah ada atau algoritma kompresi apa pun masih harus dikembangkan tanpa harus mengubah apa pun pada inner bekerjatar
sama sekali.Segera setelah alat kompresi "hiper-zip-utra" atau baru semua keluar Anda sudah siap menggunakannya merangkul pelayan baru Anda dengan seluruh kekuatan
tar
.Stabilitas
tar
telah digunakan secara berat sejak awal tahun 80-an diuji dan dijalankan pada sistem operasi dan mesin yang banyak.Mencegah kebutuhan untuk menemukan kembali roda dalam menerapkan kepemilikan penyimpanan, izin, stempel waktu, dan sejenisnya berulang-ulang untuk setiap alat pengarsipan baru tidak hanya menghemat banyak waktu (jika tidak dihabiskan tidak) dalam pengembangan, tetapi juga menjamin keandalan yang sama untuk setiap aplikasi baru.
konsistensi Antarmuka pengguna tetap sama sepanjang waktu.
Tidak perlu diingat bahwa untuk mengembalikan izin menggunakan alat A Anda harus melewati opsi
--i-hope-you-rember-this-one
dan menggunakan alat B Anda harus menggunakan--this-time-its-another-one
saat menggunakan alat C itu `--hope-you-did-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
Banyak jawaban bagus, tetapi semuanya mengabaikan fakta penting. Tar memiliki ekosistem pengguna dan pengembang yang mapan di dunia seperti Unix. Itu membuatnya terus berjalan, seperti halnya ZIP terus berjalan dengan ekosistem DOS / Windows. Memiliki ekosistem seperti itu adalah apa yang menopang suatu teknologi, bukan keunggulan teknisnya.
sumber
Alasannya adalah "kubu dalam budaya". Ada banyak orang seperti saya yang matanya berkaca-kaca jika mereka diminta memproses apa pun selain arsip tar terkompresi, atau ZIP sesekali, jika berasal dari dunia Windows.
Saya tidak ingin mendengar tentang 7-Zip, RAR atau apa pun. Jika saya harus menginstal sebuah program untuk membuka kompres file Anda, itu berfungsi. Saya akan melakukannya jika itu menghasilkan saya dibayar, atau jika kontennya adalah sesuatu yang "harus saya miliki" dan tidak tersedia dengan cara lain.
Salah satu keuntungan tar adalah jika Anda mengirim tarball kepada seseorang, tar itu langsung dikenali. Penerima dapat mengetik perintah ekstraksi menggunakan memori otot.
Pertanyaan sebenarnya adalah: mengapa beberapa orang begitu terobsesi untuk menghemat satu byte ruang lagi sehingga mereka meminta orang lain untuk membuang waktu menginstal beberapa utilitas eksotis dan belajar bagaimana menggunakannya? Dan kemudian ada penggunaan bodoh dari kompresi dan format arsip eksotis. Apakah video H.264 dengan suara AAC benar-benar perlu dimasukkan ke dalam RAR multi-bagian?
Format tar mungkin sudah tua, tetapi menyimpan semua yang relevan: konten file, jalur, cap waktu, izin, dan kepemilikan. Ia tidak hanya menyimpan tautan simbolik, tetapi juga dapat mempertahankan struktur tautan keras. Ia juga menyimpan file-file khusus, sehingga arsip tape dapat digunakan untuk hal-hal seperti
/dev
direktori minature yang digunakan selama bootstrap. Anda dapat menyatukan distribusi Linux yang format paket binernya tidak terdiri dari apa pun, tetapi tarball yang tidak terkompresi relatif terhadap root filesystem.sumber
Langsung menjawab pertanyaan spesifik yang Anda ajukan:
Ada peningkatan kinerja tertentu, dalam kasus umum, menggunakan
tar
terutama dengan perpustakaan kompresi yang dibangun di (tar xvzf
atautar xvjf
perintah gaya baris, di mana perpustakaan kompresi digunakan daripada proses kedua). Ini berasal dari dua penyebab utama:saat memproses sejumlah besar file yang relatif kecil, terutama yang biasa digunakan dalam mendistribusikan perangkat lunak, ada redundansi yang tinggi. Mengkompresi banyak file menghasilkan kompresi keseluruhan yang lebih tinggi daripada mengompresi file individual. Dan "kamus" dihitung satu kali untuk setiap input, bukan untuk setiap file.
tar
memahami sistem file. Ini dirancang untuk menyimpan dan mengembalikan sistem operasi yang berfungsi / bisa digunakan. Ini sangat memahami apa yang penting pada sistem file UNIX, dan dengan setia menangkap dan mengembalikannya. Alat lain ... tidak selalu, terutama keluarga zip, yang dirancang lebih baik untuk berbagi file di antara keluarga OS, di mana dokumen adalah hal yang penting, bukan salinan sensitif OS yang setia.Penanganan file yang jarang. Beberapa lib database langsung bergantung pada file jarang - file yang datanya nominal GB, tetapi data aktual yang ditulis dan disimpan jauh, jauh lebih sedikit, dan hanya beberapa blok disk yang benar-benar digunakan. Jika Anda menggunakan alat yang tidak disadari, maka pada dekompresi, Anda berakhir dengan konsumsi blok disk yang besar, semuanya mengandung nol. Mengubahnya kembali menjadi file yang jarang adalah ... menyakitkan. Jika Anda bahkan memiliki ruang untuk melakukannya. Anda memerlukan alat yang memahami apa file yang jarang itu, dan menghormatinya.
Metadata. Unix telah mengembangkan beberapa hal aneh selama bertahun-tahun. 14 nama file karakter, nama file panjang, tautan sym sym, bit sticky, bit superuser, izin akses grup yang diwarisi, dll. Tar mengerti dan mereproduksi ini. Alat berbagi file ... tidak terlalu banyak. Banyak orang tidak menggunakan tautan seperti yang mereka bisa ... Jika Anda pernah bekerja dengan perangkat lunak yang menggunakan tautan, dan kemudian menggunakan alat yang tidak disadari untuk membuat cadangan dan memulihkan, kini Anda memiliki banyak independen file, bukan satu file dengan banyak nama. Rasa sakit. Perangkat lunak Anda gagal dan Anda memiliki disk yang mengasapi.
tar
bekerja. Itu melakukan pekerjaan yang dirancang untuk, baik. Ada pengganti dipuji lainnya (cpio
,pax
, dll, dll). Tetapi tar diinstal pada hampir semua, dan lib kompresi yang digunakannya juga sangat umum karena alasan lain. Tidak ada hal lain yang secara substansial mengalahkan apa yang dilakukan tar. Tanpa keuntungan yang jelas, dan banyak penggunaan dan pengetahuan yang tertanam di komunitas, tidak akan ada penggantian. Tar telah banyak digunakan selama bertahun-tahun. Jika kita mendapatkan perubahan besar dalam cara kita memikirkan sistem file, atau file non-teks entah bagaimana menjadi cara untuk mentransfer kode (saat ini tidak dapat membayangkan bagaimana, tetapi abaikan itu ...) maka Anda dapat menemukan alat lain. Tapi itu bukan tipe OS yang sekarang kita gunakan. Itu akan menjadi hal yang berbeda, terorganisir secara berbeda dan akan membutuhkan alat sendiri.Pertanyaan yang paling penting, saya pikir, yang tidak Anda tanyakan, adalah pekerjaan 'tar' yang tidak cocok.
tar
dengan kompresi rapuh. Anda perlu seluruh arsip, sedikit demi sedikit. Dalam pengalaman saya, itu tidak tangguh. Saya mengalami kesalahan bit tunggal yang mengakibatkan arsip multi-bagian menjadi tidak dapat digunakan. Itu tidak memperkenalkan redundansi untuk melindungi dari kesalahan (yang akan mengalahkan salah satu pertanyaan yang Anda tanyakan, tentang kompresi data). Jika ada kemungkinan kerusakan data, maka Anda ingin memeriksa kesalahan dengan redundansi sehingga Anda dapat merekonstruksi data. Itu berarti, menurut definisi, bahwa Anda tidak dikompresi secara maksimal. Anda tidak bisa sama-sama memiliki setiap bit data yang diperlukan dan membawa nilai makna maksimum (kompresi maksimum) dan memiliki setiap bit data yang mampu kehilangan dan pemulihan (redundansi dan koreksi kesalahan). Jadi ... apa tujuan arsip Anda?tar
sangat bagus di lingkungan dengan keandalan tinggi dan ketika arsip dapat direproduksi dari sumber lagi. IME, itu sebenarnya lebih buruk pada hal aslinya 'namanya - pengarsipan kaset. Kesalahan bit tunggal pada kaset (atau lebih buruk, kesalahan bit tunggal di kepala tape, di mana Anda kehilangan satu bit di setiap byte seluruh rekaman atau arsip) mengakibatkan data menjadi tidak dapat digunakan. Dengan redundansi dan deteksi kesalahan dan koreksi yang cukup, Anda dapat selamat dari salah satu masalah tersebut.Jadi ... berapa banyak kebisingan dan korupsi yang ada di lingkungan yang Anda lihat, dan dapatkah sumbernya digunakan untuk membuat kembali arsip yang gagal? Jawabannya, dari petunjuk yang Anda berikan, adalah bahwa sistemnya tidak berisik, dan sumber itu mampu membuat kembali arsip. Dalam hal ini,
tar
sudah memadai.tar
dengan kompresi juga tidak berfungsi dengan baik dengan file pra-kompresi. Jika Anda mengirim data yang sudah dikompresi ... gunakan saja tar, dan jangan repot-repot dengan tahap kompresi - itu hanya menambah siklus CPU untuk tidak banyak. Itu berarti bahwa Anda perlu tahu apa yang Anda kirim dan mengapa. Jika kamu peduli. Jika Anda tidak peduli dengan kasus-kasus khusus itu, maka tar akan dengan setia menyalin data sekitar, dan kompres akan gagal melakukan banyak hal berguna untuk membuatnya lebih kecil. Tidak ada masalah besar, selain beberapa siklus CPU.sumber
TAR adalah Tape Archive. Sudah ada selama beberapa dekade dan banyak digunakan dan didukung. Ini adalah produk yang matang dan mengurus kebutuhan saat ini serta yang lama.
sumber