Apa keuntungan menggunakan 'tar' hari ini?

209

Saya tahu taritu 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 tarenkapsulasi dalam gzipatau bzip2, 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 tarformat file yang format file lain, seperti .7zdan .ziptidak miliki?

  • Karena tarformat file yang lama, dan format file yang lebih baru ada saat ini, mengapa tar(apakah dienkapsulasi gzip, bzip2atau bahkan yang baru xz) 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?

MarcusJ
sumber
33
Saya tidak setuju bahwa itu "membuang-buang waktu". Jika yang Anda maksud kinerja, tidak ada penalti kinerja aktual untuk tar karena formatnya sangat efisien. Jika Anda bermaksud itu membuang - buang waktu Anda , saya tidak melihat bagaimana tar xvzfini lebih sulit daripada 7z -x...
allquixotic
41
Dia tampaknya meratapi kenyataan bahwa tar tidak menyimpan katalog di awal, jadi alat kompresi gui yang ingin mendaftar konten sebelum mengekstraksi harus mendekompresi seluruh tar hanya untuk daftar konten, kemudian mereka mendekompres lagi ketika mengekstraksi .
psusi
10
@ MarscJ: Anda pikir 7z entah bagaimana secara ajaib tahu di mana setiap file dimulai dalam arsip? Selain itu, algoritma kompresi biasa (gzip, bzip2) bekerja dengan streaming konten: tidak perlu menyelesaikan 100% tahap pertama sebelum berikutnya.
unperson325680
11
Juga @MarcusJ Anda tampaknya membingungkan dua hal yang berbeda: ketika Anda melakukannya tar xvzf, data yang tidak terkompresi tidak ditulis ke hard disk dalam .tarformat! Anda benar bahwa jika Anda menjalankan gunzip blah.tar.gzdan kemudian tar 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. The tar xzfpenggunaan sebuah UNIX Pipe (pada dasarnya salinan memori) untuk mentransfer data terkompresi dari gzip(atau kompresor apa pun) untuk tar, sehingga data tersebut tidak ditulis ke disk dalam .tarformat yang.
allquixotic
14
Satu hal yang saya tahu adalah bahwa tar(terutama terkompresi) berperilaku buruk ketika menyangkut korupsi data. Redundansi kecil / data pemulihan yang ditambahkan oleh format modern bernilai emas
PPC

Jawaban:

178

Bagian 1: Kinerja

Berikut ini adalah perbandingan dua alur kerja terpisah dan apa yang mereka lakukan.

Anda memiliki file di disk blah.tar.gzyang, 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:

tar cf blah.tar files ...

Ini akan menghasilkan di blah.tarmana hanya kumpulan dari files ...dalam bentuk yang tidak terkompresi.

Maka Anda akan melakukannya

gzip blah.tar

Ini akan membaca isi blah.tardari disk, kompres mereka melalui algoritma kompresi gzip, tulis kontennya blah.tar.gz, lalu batalkan tautan (hapus) file tersebut blah.tar.

Sekarang, mari kita dekompresi!

Cara 1

Anda punya blah.tar.gz, dengan satu atau lain cara.

Anda memutuskan untuk menjalankan:

gunzip blah.tar.gz

Ini akan

  • BACA isi data terkompresi 1 GB dari blah.tar.gz.
  • PROSES data yang dikompresi melalui gzipdekompresor dalam memori.
  • Saat buffer memori terisi dengan data "satu blok", TULIS data yang tidak terkompresi ke dalam file blah.tarpada disk dan ulangi sampai semua data terkompresi dibaca.
  • Putuskan tautan (hapus) file tersebut blah.tar.gz.

Sekarang, Anda memiliki blah.tarpada 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:

tar xvf blah.tar

Ini akan

  • BACA konten data terkompresi 2 GB blah.tardan tarstruktur data format file, termasuk informasi tentang izin file, nama file, direktori, dll.
  • MENULIS 2 GB data ditambah metadata ke disk. Ini melibatkan: menerjemahkan struktur data / informasi metadata ke dalam membuat file dan direktori baru pada disk yang sesuai, atau menulis ulang file dan direktori yang ada dengan konten data baru.

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:

tar xvzf blah.tar.gz

Ini akan

  • BACA isi data terkompresi 1 GB blah.tar.gz, satu blok pada satu waktu, ke dalam memori.
  • PROSES data yang dikompresi melalui gzipdekompresor dalam memori.
  • Sebagai buffer memori penuh, itu akan pipa data, dalam memori, hingga tarparser format file, yang akan membaca informasi tentang metadata, dll dan file data terkompresi.
  • Ketika buffer memori terisi dalam tarfile 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, Zipatau 7-Zip program, menyesuaikan untuk setiap perbedaan rasio kompresi.

Dan jika rasio kompresi menjadi perhatian Anda, gunakan Xzkompresor untuk merangkum tar, 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.

allquixotic
sumber
Kudos untuk jawaban yang bagus dengan semua konten dipisahkan di bawah tiga header yang berbeda.
JFW
2
"Bagian 3: Kompatibilitas" tampaknya telah disalin dari jawaban @ Kruug.
titaniumdecoy
23
@titaniumdecoy Pernahkah Anda memperhatikan bahwa allquixotic yang awalnya menulis bagian itu dan mengeditnya menjadi jawaban Kruug?
slhck
2
Terima kasih telah menunjukkan itu, saya tidak menyadarinya. Namun tampaknya agak konyol bagi saya untuk memiliki blok teks yang identik dalam dua jawaban berbeda di halaman ini.
titaniumdecoy
1
Ini menjawab mengapa tarcocok 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 seperti dartidak digunakan. Dengan kata lain, jawaban ini membenarkan penggunaan agregator file, tetapi bukan dari tarperangkat lunak itu sendiri.
gaborous
101

Ini telah dijawab pada Stack Overflow .

bzip dan gzip bekerja pada file tunggal, bukan grup file. Zip lama polos (dan pkzip) beroperasi pada grup file dan memiliki konsep arsip bawaan.

Filosofi * nix adalah salah satu alat kecil yang melakukan pekerjaan tertentu dengan sangat baik dan dapat dihubungkan bersama. Itu sebabnya ada dua alat di sini yang memiliki tugas khusus, dan mereka dirancang agar cocok bersama. Ini juga berarti Anda dapat menggunakan tar untuk mengelompokkan file dan kemudian Anda memiliki pilihan alat kompresi (bzip, gzip, dll).

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 tardan 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 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.

Kruug
sumber
7
Hai @ Kanru, saya mengedit posting Anda hanya untuk memberikan perspektif praktis tentang mengapa orang masih memilih untuk menggunakan format ini ketika mereka memiliki pilihan untuk menggunakan sesuatu yang lain. Saya tidak mengubah teks yang sudah Anda miliki. Ini hanya untuk memastikan bahwa apa yang tampaknya merupakan jawaban kanonik untuk pertanyaan ini akan memiliki gambaran lengkap. Silakan mengedit edit saya jika Anda mau :)
allquixotic
5
@allquixotic siapa awal? Edit hasil edit dan edit agar Anda dapat mengedit hasil edit ...
SnakeDoc
21
Jawaban ini jelas merupakan kasus "Saya kadang-kadang terpesona oleh upvotes yang tidak layak". Itu tidak membahas masalah inti dari pertanyaan yaitu dengan daftar isi tar terkompresi dan itu bahkan bukan jawaban asli!
Ярослав Рахматуллин
5
-1 untuk keadilan besar. ini seharusnya komentar.
wim
6
Saya tidak membeli argumen common / denominator umum terendah; Saya ingat pada sistem baru (sun) sering harus mengunduh gzip / gunzip (dari sunfreeware) hanya untuk menginstal perangkat lunak paket tar.gz lain (ditambah gnu tar, karena tar matahari mengisap). Untuk peninggalan lama / umum, Anda punya 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.
michael
63

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.

dmckee
sumber
12
Anda tidak perlu GNU tar untuk menggunakan kompresor sembarang: cukup beri tahu tar untuk menulis arsip untuk stdout dengan f -dan pipa itu ke kompresor.
Ilmari Karonen
3
"Apakah Anda ingin data yang tidak terkompresi (mengapa?)?" Saya menggunakan tarsangat 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. Misalnya tar cf - * | tar xf - -C /somewhere.
Steve
1
Selain itu, Anda ingin file .tar ketika sistem file tujuan melakukan de-duplikasi. Membuat arsip terkompresi pada sistem file yang melakukan de-duplikasi akan secara substansial menurunkan rasio dedupe. Contoh: Kami pernah menghapus file tar.gz $ 10.000,00; artinya, itu menghabiskan ruang penyimpanan senilai $ 10k karena seseorang menggunakan kompresi.
Aaron
@Steve siklus CPU mungkin lebih murah daripada disk IO untuk algoritma seperti LZ4 atau LZO. Itu sebabnya mereka digunakan dalam zram, dan sistem file kompresi transparan seperti NTFS, ZFS, Btrfs ... jadi kadang-kadang sebenarnya lebih cepat daripada mengompres karena jumlah disk IO sangat berkurang
phuclv
30

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

tar cf - some_directory | ssh host "(cd ~/somewhere | tar xf -)"

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 taradalah, saya dapat mengharapkannya tersedia di setiap sistem.

Alasan menggunakan pengarsipan dengan kompresi gzip

Salah satu alasan yang saya gunakan tardengan gzipadalah: 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 gunakan gzip, yang tidak memaksimalkan CPU (berbeda dengan 7-Zip , misalnya), yang berarti bahwa saya I / O terikat lagi dan tidak terikat CPU. Dan lagi: gzipdapat dianggap tersedia di mana-mana.

Alasan untuk menggunakan tarmendukung scp, rsyncdll

Ini berdetak scpjika 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, rsynchanya benar-benar terbayar jika bagian dari file - atau versi yang lebih lama - sudah ada di tujuan. Untuk salinan awal taradalah yang tercepat, dengan kompresi atau tanpa, tergantung pada data aktual.

Marco
sumber
1
Tetapi jika Anda akan mengarsipkan, mengapa tidak kompres juga? Oke, ya itu bisa menghemat waktu untuk file yang tidak mudah dikompresi, tapi kemudian para pengarsip mungkin harus tahu musik itu misalnya, tidak terlalu kompresibel, kecuali untuk header.
MarcusJ
2
Anda mungkin tidak perlu, atau konten Anda mungkin tidak dapat dikompres.
Hasturkun
4
Untuk alasan kinerja, seringkali lebih mudah untuk menggunakan agregasi file yang tidak terkompresi ketika mengirim data melalui tautan jaringan bandwidth sangat tinggi yang melebihi kecepatan kompresor dapat memampatkan data. Ini dapat dicapai misalnya dengan Gigabit Ethernet; hanya beberapa algoritma kompresi yang dirancang dengan baik, yang juga memiliki rasio kompresi yang sangat buruk, dapat memampatkan data yang cepat bahkan pada CPU desktop besar. Pada perangkat tertanam Anda memiliki lebih sedikit waktu CPU untuk bekerja.
allquixotic
3
tidak hanya mempercepat hal-hal ini tetapi juga memungkinkan menjaga kepemilikan file, stempel waktu, dan atribut (jika hak pengguna mengizinkannya)
Andre Holzner
3
@AndreHolzner Benar. Saya sering melakukannya tar cf - . | (cd ~/somewhere; tar xvf -). Sangat berguna tidak harus menunggu sampai indeks pusat ditulis (seperti misalnya dalam file zip).
user239558
24

Menambahkan ke jawaban baik lainnya di sini, saya lebih suka kombinasi tar+ gzip|bzip2|xzterutama karena file-file terkompresi ini seperti aliran, dan Anda dapat menyalurkannya dengan mudah.

Saya perlu mengompres file yang tersedia di internet. Dengan salah satu zipatau rarformat saya harus mengunduhnya terlebih dahulu dan kemudian mengompresnya. Dengan tar.{gz,bz2,xz}saya dapat mengunduh dan membuka kompresi dalam langkah yang sama, tanpa perlu memiliki arsip terkompresi secara fisik pada disk:

curl -s http://example.com/some_compressed_file.tar.gz | tar zx

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 zipatau rarfile.

Carlos Campderrós
sumber
2
Saya tidak tahu tentang rar (ini adalah program yang mengerikan yang sepertinya hanya menjadi populer dengan bajak laut karena kemampuannya untuk dipecah menjadi beberapa file yang lebih kecil), tetapi Anda dapat melakukan streaming zip dengan baik. Halaman manual bahkan menyebutkannya. Ini juga memiliki keuntungan karena dapat mengekstraksi atau memperbarui file dari tengah arsip besar secara efisien, meskipun tar cenderung mendapatkan kompresi yang sedikit lebih baik. Kompresi vs akses acak adalah kompromi.
psusi
3
@psusi salah. Anda dapat melakukan peretasan seperti ini , tetapi yang dilakukannya adalah mengunduh semua file dalam memori dan kemudian unzip, alih-alih membuka ritsleting saat mengunduh. Dan funziphanya mengekstrak file pertama di zipfile, tidak semua.
Carlos Campderrós
2
@ Duduk hanya untuk mengklarifikasi, bukan masalah, hanya mengoptimalkan waktu Anda (saya tidak peduli dengan ruang jika itu yang Anda pikirkan)
Carlos Campderrós
1
Kedua belah pihak bekerja: Anda dapat tar di satu sisi dan untar di sisi lain, juga:tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
Carlos Campderrós
1
@psusi seperti yang saya ingat dari dulu ketika menggunakan pkzip untuk menyimpan file pada banyak disket, katalog zip store di akhir arsip. Itu selalu meminta floppy terakhir untuk mulai mengekstraksi atau menampilkan katalog. Jadi en.wikipedia.org/wiki/File:ZIP-64_Internal_Layout.svg
Mikhail Moskalev
13

Ada beberapa alasan untuk tetap menggunakan (GNU) Tar.

Ini:

  • Berlisensi GPL
  • baik dalam arti filsafat Unix
    • alat tujuan tunggal, mampu melakukan beberapa tugas
  • didokumentasikan dengan baik dan memiliki banyak fitur tepercaya
  • kompatibel dengan beberapa algoritma kompresi
  • mudah digunakan dan orang-orang telah mengembangkan kebiasaan dengannya
  • tersedia secara luas
  • Saya merasa hangat dan kabur saat menggunakan perangkat lunak yang dimulai oleh RMS (tidak termasuk Emacs )

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
1
Ini perangkat lunak bebas - Begitu banyak di antaranya. Bagus dalam fungsinya - Hampir tidak dibandingkan dengan hal-hal lain. Ini didokumentasikan dengan baik dan memiliki banyak fitur - Fitur hampir tidak digunakan dan sangat mudah digunakan. Ini mendukung beberapa algoritma kompresi - Tidak sebanyak beberapa yang lain
Griffin
4
Dewa Unix menciptakannya - karena itu kita harus menggunakannya!
SnakeDoc
28
Tar juga menyimpan izin UNIX secara asli, dan sangat terkenal dan diuji. Ada lebih dari beberapa contoh di mana seseorang mungkin perlu menggumpal banyak file menjadi satu file atau streaming, tetapi tidak perlu mengompresnya.
LawrenceC
3
Untungnya tar tidak terbatas pada versi GNU saja. Sementara GNU tar jelas merupakan perangkat lunak yang baik, ujung depan libarchive + yang terkait jauh lebih cepat dan mudah ditanamkan dalam proyek perangkat lunak lain. Anda dapat membuat argumen untuk tar tanpa mengubahnya menjadi pertarungan lisensi.
Lucas Holt
1
Saya tidak sarkastik. Saya suka RMS dan cara dia menjalankan kepercayaannya.
Ярослав Рахматуллин
11

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.

xorsyst
sumber
5
Tidak, Anda bisa membaca dan menulis file zip sebagai aliran dari dan ke pipa.
Mark Adler
Itu mungkin implementasi khusus maka, tentu saja tidak didukung oleh pkzip asli.
xorsyst
1
Ya, perangkat lunak harus ditulis untuk mendukungnya. Format zip mendukung sepenuhnya, dengan deskriptor data yang dapat mengikuti data terkompresi dengan panjang dan CRC.
Mark Adler
@MarkAdler, perangkat lunak apa? Infozip tidak mendukung unzipping dari pipa.
psusi
11

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.

Apakah ada penalti kinerja selama tahap agregasi / kompresi / dekompresi untuk menggunakan tar yang dienkapsulasi dalam gzip atau bzip2, 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).

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.

Apakah ada fitur format file tar yang tidak dimiliki format file lain, seperti .7z dan .zip?

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.

Karena tar adalah format file yang lama, dan format file yang lebih baru ada saat ini, mengapa tar (baik yang dienkapsulasi dalam gzip, bzip2 atau bahkan xz baru) masih begitu banyak digunakan saat ini di GNU / Linux, Android, BSD, dan UNIX sejenis lainnya sistem operasi, untuk transfer file, sumber program dan unduhan biner, dan kadang-kadang bahkan sebagai format manajer paket?

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.

Mark Adler
sumber
CW adalah singkatan dari Community Wiki . Lihat juga Apa itu "Wiki Komunitas"? .
ctype.h
Saya kira itu CW karena pertanyaannya memiliki lebih dari 15 jawaban. Ketika Anda memposting jawaban ini, karena ini tanggal 15, pertanyaan dan semua jawaban ditandai CW.
ctype.h
Saya gagal melihat bagaimana jawaban ini mengatakan sesuatu yang tidak ada jawaban lain lakukan, selain langsung mengutip pertanyaan (yang saya tulis, BTW, karena revisi asli dari pertanyaan itu cukup mengerikan untuk ditutup sebagai NARQ). Tapi usaha yang bagus.
allquixotic
Um, baiklah. Apa pun yang ingin Anda pikirkan baik-baik saja. Jawaban Anda atau jawaban lain apa pun tampaknya menunjukkan apakah ada penalti kinerja. Jawaban Anda tidak membahas perbedaan kompresi yang terlihat, meskipun yang lain lakukan. Karena milik Anda sebenarnya tidak membahas kinerja (bagian kinerja Anda sebenarnya tentang alur kerja, bukan apa-apa tentang kinerja), tidak ada jawaban lain yang menjawab semuanya di satu tempat. Sangat menarik bahwa Anda menulis pertanyaan penalti kinerja, tetapi Anda tidak menjawabnya! Sosok pergi.
Mark Adler
Omong-omong, diskusi alur kerja Anda adalah tentang sesuatu yang tidak pernah dilakukan siapa pun, yaitu menulis file tar ke disk dan kemudian mengompresnya. tar selalu digunakan baik memanggil program kompresi secara langsung, atau langsung ke pipa ke program kompresi.
Mark Adler
11

Performa

Perbedaan besar adalah urutan kompresi dan pengarsipan dilakukan di. tarArsip, maka secara opsional dapat mengirim arsip ke kompresor, dan zipmembangun 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 zipmetode 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, tetapi dartidak, dan zipbisa, 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 taradalah 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. dartidak memberikan manfaat yang cukup untuk membenarkan penerbitan file dalam format ketika kebanyakan orang sudah tarmenginstal, dan sangat sedikit yang tahu dar, jadi inersia sederhana membuat kita tetap pada standar lama.

psusi
sumber
2
zip dapat menyimpan dan mengembalikan izin Unix. Utilitas zip dan unzip dari InfoZIP biasanya didistribusikan dengan sistem Unix melakukan hal ini.
Mark Adler
3
zip tidak memampatkan file dalam potongan 32K. Anda membingungkan ukuran jendela geser 32K dengan cara kompresi dilakukan.
Mark Adler
1
gzip -9 tidak memiliki kamus 900 kB. Semua level gzip menggunakan kamus 32K. Anda mungkin berpikir tentang bzip2.
Mark Adler
Begitu banyak informasi yang salah dalam satu jawaban.
Mark Adler
1
Anda harus mengoreksi jawaban Anda atau menghapus jawaban Anda.
Mark Adler
7

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:

  • kepemilikan file
  • izin file
  • izin file yang kurang umum (mis. setuid, bit sticky)
  • tautan simbolik
  • tautan keras
  • entri perangkat (yaitu perangkat karakter dan blokir)
  • file jarang
  • Entri ACL ( tidak didukung oleh semua versi )
  • atribut diperluas / pengguna ( tidak didukung oleh semua versi )
  • Label SElinux ( tidak didukung oleh semua versi )

Ini juga memiliki --one-file-systemopsi yang sangat berguna ketika membuat cadangan.

Setiap kali fitur baru ditambahkan ke sistem file, dukungan akan ditambahkan ke yang tarpertama (atau bahkan secara eksklusif). Jadi ini terus menjadi cara paling kompatibel untuk menyimpan file.

tylerl
sumber
Jawaban ini adalah satu-satunya yang masuk akal. Terima kasih telah mempostingnya.
Gaborous
5

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.

Michael Dillon
sumber
Anda praktis tidak pernah melihat tarfile yang tidak dikompresi dan ada alasan untuk itu. tarmenggunakan potongan yang sangat besar, artinya Anda mendapatkan banyak lapisan di akhir file. Untuk menghilangkan semua nol ini, hampir selalu bermanfaat untuk menggunakannya gziptanpa berpikir dua kali.
Christian
Pengecualian yang lucu adalah bahwa kode sumber gzip tersedia sebagai tar telanjang, untuk alasan yang jelas.
Mark Adler
4

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.

kriss
sumber
3

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 tarpengarsipan. Tidaklah efektif untuk menyewa seseorang untuk "memperbaiki" semua sistem yang lama.

Keltari
sumber
3

tar adalah UNIX karena UNIX adalah tar

Menurut pendapat saya alasan masih menggunakan tarhari 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 ( taruntuk 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 xzuntuk 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 tardengan algoritma kompresi apa pun yang sudah ada atau algoritma kompresi apa pun masih harus dikembangkan tanpa harus mengubah apa pun pada inner bekerja tarsama 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-onedan 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.

mikyra
sumber
3

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.

Isaac Rabinovitch
sumber
Komentar yang sangat bagus, saya bahkan belum memikirkannya, dan itu benar-benar poin bagus untuk dibuat.
MarcusJ
3

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 /devdirektori 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.

Kaz
sumber
Kembali "Sangat terobsesi" ... bayangkan Anda terdampar di medan perang dengan satu laptop yang sudah dikeraskan, dan hard drive berukuran 20G hampir penuh, mungkin satu Gig tersisa, dan mendengar suara tembakan dari jauh, Anda benar-benar ingin menelusuri manual 100MB .PDF yang menunjukkan cara memperbaiki jip, tetapi file tersebut dalam file .tgz 2 Gig. Dan laptop menjalankan OS tertutup sumber aneh yang tertutup, dan Anda tidak memiliki akses root untuk menghapus file sistem, bukan berarti akan jelas cara menghapus 4G + tanpa merusak dearchiver atau penampil PDF. Jika Anda bisa mengekstrak file 100MB itu ...
agc
2

Langsung menjawab pertanyaan spesifik yang Anda ajukan:

Apakah ada penalti kinerja selama tahap agregasi / kompresi / dekompresi untuk menggunakan tar yang dienkapsulasi dalam gzip atau bzip2, 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).

Ada peningkatan kinerja tertentu, dalam kasus umum, menggunakan tarterutama dengan perpustakaan kompresi yang dibangun di ( tar xvzfatau tar xvjfperintah 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.

  • tarmemahami 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.

Apakah ada fitur format file tar yang tidak dimiliki format file lain, seperti .7z dan .zip?

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.

Karena tar adalah format file yang lama, dan format file yang lebih baru ada saat ini, mengapa tar (baik yang dienkapsulasi dalam gzip, bzip2 atau bahkan xz baru) masih begitu banyak digunakan saat ini di GNU / Linux, Android, BSD, dan UNIX sejenis lainnya sistem operasi, untuk transfer file, sumber program dan unduhan biner, dan kadang-kadang bahkan sebagai format manajer paket?

tarbekerja. 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.

tardengan 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?tarsangat 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, tarsudah memadai.

tardengan 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.

JezC
sumber
-3

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.

Edward
sumber