Apakah Kelebihan Menggunakan Format Fail Tar Hari Ini?
Format pengarkiban tar adalah, dalam tahun-tahun pengkomputeran, Metuselah yang benar tetapi masih digunakan berat hari ini. Apa yang membuatkan format tar sangat berguna lama selepas penubuhannya?
Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.
Soalan
Pembaca SuperUser MarcusJ ingin tahu mengenai format tar dan mengapa kami masih menggunakannya selepas semua tahun ini:
Saya tahu bahawa tar dibuat untuk arkib pita belakang pada hari ini, tetapi hari ini kita mempunyai format fail arkib yang kedua-dua fail agregat dan melakukan mampatan dalam format fail logik yang sama.
Soalan:
- Adakah denda akan dikenakan prestasi semasa penjumlahan / mampatan peringkat / penyahmampatan untuk menggunakan tar terkandung dalam gzip atau bzip2, jika dibandingkan dengan menggunakan format fail yang tidak pengagregatan dan mampatan dalam struktur data yang sama? Anggapkan runtime pemampat yang dibandingkan sama (contohnya gzip dan Deflate adalah sama).
- Adakah terdapat ciri-ciri format fail tar yang format fail lain, seperti .7z dan .zip tidak ada?
- Sejak tar adalah satu format lama fail, dan format fail baru wujud pada hari ini, mengapa tar (sama ada terkandung dalam gzip, bzip2 atau xz baru) masih digunakan secara meluas hari ini pada GNU / Linux, Android, BSD, dan lain-lain UNIX seperti sistem pengendalian, untuk pemindahan fail, sumber program dan muat turun binari, dan kadang-kadang juga sebagai format pengurus pakej?
Itulah soalan yang sangat munasabah; begitu banyak telah berubah dalam dunia pengkomputeran dalam tiga puluh tahun yang lalu tetapi kami masih menggunakan format tar. Apa cerita itu?
Jawapan
Penyumbang SuperUser Allquixotic menawarkan beberapa pandangan tentang panjang umur dan fungsi format tar:
Bahagian 1: Prestasi
Berikut adalah perbandingan dua aliran kerja yang berasingan dan apa yang mereka lakukan.
Anda mempunyai fail pada cakera
blah.tar.gz
iaitu, katakan data 1 GB gzip yang dikompresi yang, apabila tidak dikompresi, menempati 2 GB (jadi nisbah mampatan sebanyak 50%).Cara yang anda akan buat ini, jika anda melakukan pengarsipan dan pemampatan secara berasingan, akan:
tar cf blah.tar files ...
Ini akan menyebabkan
blah.tar
yang merupakan pengagregatan semata-matafail ...
dalam bentuk tidak terkompresi.Kemudian anda akan lakukan
gzip blah.tar
Ini akan membaca kandungan
blah.tar
dari cakera, tekan mereka melalui algoritma pemampatan gzip, tulis kandungan tersebutblah.tar.gz
, kemudian hapuskan (hapuskan) fail tersebutblah.tar
.Sekarang, mari kita mengecek!
Jalan 1
Kamu ada
blah.tar.gz
, satu cara atau yang lain.Anda memutuskan untuk menjalankan:
gunzip blah.tar.gz
Ini akan
- BACAL kandungan data mampatan 1GB
blah.tar.gz
.- PROSES data termampat melalui
gzip
penyahmampatan dalam ingatan.- Oleh kerana penampan memori mengisi data bernilai "blok", MENGULANG data yang tidak dimampatkan ke dalam fail
blah.tar
pada cakera dan ulangi sehingga semua data termampat dibaca.- Nyahpaut (hapuskan) fail tersebut
blah.tar.gz
.Sekarang, awak ada
blah.tar
pada cakera, yang tidak dikompresi tetapi mengandungi satu atau lebih fail di dalamnya, dengan overhead struktur data yang sangat rendah. Saiz fail mungkin beberapa bait lebih besar daripada jumlah semua data fail.Anda menjalankan:
tar xvf blah.tar
Ini akan
- BACA 2GB kandungan data yang tidak dimampatkan
blah.tar
dan jugatar
struktur data format fail, termasuk maklumat mengenai kebenaran fail, nama fail, direktori, dan lain-lain.- RAWUHkan cakera 2GB data ditambah metadata. Ini melibatkan: menterjemahkan struktur data / maklumat metadata ke dalam membuat fail dan direktori baru pada cakera yang sesuai, atau menulis semula fail dan direktori sedia ada dengan kandungan data baru.
Jumlah data kami BACA dari cakera dalam proses ini adalah 1GB (untuk gunzip) + 2GB (untuk tar) = 3GB.
Jumlah data kami WROTE ke cakera dalam proses ini adalah 2GB (untuk gunzip) + 2GB (untuk tar) + beberapa bait untuk metadata = kira-kira 4GB.
Jalan 2
Kamu ada
blah.tar.gz
, satu cara atau yang lain.Anda memutuskan untuk menjalankan:
tar xvzf blah.tar.gz
Ini akan
- BACAL kandungan data mampatan 1GB
blah.tar.gz
, satu blok pada suatu masa, ke dalam ingatan.- PROSES data termampat melalui
gzip
penyahmampatan dalam ingatan.- Apabila penimbal memori mengisi, ia akan paip bahawa data, dalam memori, melalui kepada
tar
format parser fail, yang akan membaca maklumat mengenai metadata, dan lain-lain dan data fail yang tidak dimampatkan.- Oleh kerana penampan ingatan mengisi di dalam
tar
fail parser, ia akan MENULIS data yang tidak dikompresi ke cakera, dengan membuat fail dan direktori dan mengisinya dengan kandungan yang tidak dikompres.Jumlah data kami BACA dari cakera dalam proses ini adalah 1GB data termampat, tempoh.
Jumlah data kami WROTE ke cakera dalam proses ini adalah 2GB data tidak terkompresi + beberapa bait untuk metadata = sekitar 2GB.
Jika anda perasan, jumlah cakera I / O masuk Jalan 2 adalah sama kepada cakera I / O yang dilakukan oleh, katakan, yang
Zip
atau7-Zip
program, menyesuaikan untuk sebarang perbezaan nisbah mampatan.Dan jika nisbah mampatan adalah kebimbangan anda, gunakan
Xz
pemampat untuk merangkumtar
, dan anda mempunyai arsip LZMA2'ed TAR, yang sama efisiennya dengan algoritma yang paling maju7-Zip
:-)Bahagian 2: Ciri-ciri
tar
Kedai UNIX kebenaran dalam metadata fail, dan sangat terkenal dan diuji untuk berjaya pembungkusan sehingga direktori dengan semua jenis kebenaran berlainan, pautan simbolik, dan lain-lain Terdapat lebih daripada beberapa keadaan di mana seseorang mungkin perlu Glob sekumpulan fail ke dalam satu fail atau aliran tunggal, tetapi tidak semestinya memampatkannya (walaupun mampatan berguna dan sering digunakan).Bahagian 3: Keserasian
Banyak alat diedarkan dalam bentuk sumber atau binari sebagai .tar.gz atau .tar.bz2 kerana ia adalah format fail "penyebut biasa paling rendah": sama seperti kebanyakan pengguna Windows mempunyai akses kepada .zip atau .rar decompressors, kebanyakan pemasangan Linux, walaupun yang paling asas, akan mempunyai akses kepada sekurang-kurangnya tar dan gunzip, tidak kira betapa lama atau kurang. Malah firmware Android mempunyai akses kepada alat ini.
Projek-projek baru menyasarkan khalayak berjalan pengagihan moden boleh dengan baik mengedarkan dalam format yang lebih moden, seperti .tar.xz (menggunakan Xz (LZMA) format mampatan, yang memampatkan lebih baik daripada gzip atau bzip2), atau .7 z, yang adalah sama dengan format fail Zip atau Rar kerana kedua-duanya memampatkan dan menentukan susun atur untuk mencampurkan pelbagai fail ke dalam fail tunggal.
Anda tidak melihat .7z digunakan lebih kerap kerana alasan yang sama bahawa muzik tidak dijual dari kedai muat turun dalam talian dalam format baru seperti Opus, atau video dalam WebM. Keserasian dengan orang yang menjalankan sistem kuno atau sangat asas.
Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.