GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada tar atau cpio yang lebih pintar di luar sana untuk mengambil file yang disimpan di arsip secara efisien?

Solusi 1:

tar (dan cpio dan afio dan pax dan program serupa) adalah format berorientasi aliran - mereka dimaksudkan untuk dialirkan langsung ke kaset atau disalurkan ke proses lain. sementara, secara teori, dimungkinkan untuk menambahkan indeks di akhir file/aliran, saya tidak tahu versi apa pun yang melakukannya (meskipun ini akan menjadi peningkatan yang berguna)

itu tidak akan membantu dengan arsip tar atau cpio Anda yang ada, tetapi ada alat lain, dar ("arsip disk"), yang membuat file arsip yang berisi indeks semacam itu dan dapat memberi Anda akses langsung cepat ke file individual di dalam arsip .

jika dar tidak disertakan dengan unix/linux-dist Anda, Anda dapat menemukannya di:

http://dar.linux.free.fr/

Solusi 2:

Anda dapat menggunakan SquashFS untuk arsip semacam itu. Itu adalah

  • dirancang untuk diakses menggunakan driver sekring (meskipun ada antarmuka tradisional)
  • terkompresi (semakin besar ukuran blok, semakin efisien)
  • disertakan dalam kernel Linux
  • menyimpan UID/GID dan waktu pembuatan
  • sadar akan endianess, oleh karena itu cukup portabel

Satu-satunya kelemahan yang saya tahu adalah hanya bisa dibaca.

http://squashfs.sourceforge.net/http://www.tldp.org/HOWTO/SquashFS-HOWTO/whatis.html

Solusi 3:

Meskipun tidak menyimpan indeks, star konon lebih cepat dari tar . Plus itu mendukung nama file yang lebih panjang dan memiliki dukungan yang lebih baik untuk atribut file.

Seperti yang saya yakin Anda ketahui, dekompresi file membutuhkan waktu dan kemungkinan akan menjadi faktor kecepatan ekstraksi bahkan jika ada indeks.

Edit: Anda mungkin juga ingin melihat xar . Itu memiliki header XML yang berisi informasi tentang file dalam arsip.

Dari halaman referensi:

Header XML Xar memungkinkannya memuat metadata arbitrer tentang file yang terdapat di dalam arsip. Selain metadata file unix standar seperti ukuran file dan waktu modifikasi dan pembuatannya, xar dapat menyimpan informasi seperti bit file ext2fs dan hfs, bendera unix, referensi ke atribut yang diperluas, informasi Mac OS X Finder, Mac OS Garpu sumber daya X, dan hash data file.

Solusi 4:

Thorbjørn Ravn Anderser benar. GNU tar membuat arsip "seekable" secara default. Tapi itu tidak menggunakan informasi itu ketika membaca arsip ini jika opsi -n tidak diberikan. Dengan opsi -n saya baru saja mengekstrak file 7GB dari arsip 300GB pada waktu yang diperlukan untuk membaca/menulis 7GB. Tanpa -n butuh lebih dari satu jam dan tidak membuahkan hasil.

Saya tidak yakin bagaimana kompresi memengaruhi ini. Arsip saya tidak dikompresi. Arsip terkompresi tidak "dapat dicari" karena tar GNU saat ini (1.26) memindahkan kompresi ke program eksternal.

Solusi 5:

Satu-satunya format arsip yang saya tahu yang menyimpan indeks adalah ZIP, karena saya harus merekonstruksi indeks yang rusak lebih dari satu kali.


Linux
  1. Buat Arsip Tar Dari Direktori, Kecuali Untuk File Tersembunyi?

  2. Bagaimana Cara Menambahkan/Memperbarui File Ke Arsip Tar.gz yang Ada?

  3. Jalankan perintah untuk setiap file di direktori saat ini

  1. Ekstrak tar kesalahan file tar.bz2

  2. Apa yang setara dengan perintah File Linux untuk windows?

  3. Batalkan pengarsipan file sambil mengurangi ukuran arsip?

  1. Kesalahan tar:EOF tak terduga dalam arsip

  2. Cara mendapatkan ukuran file tar.gz dalam (MB) dengan python

  3. Apakah ada cara cepat untuk mendapatkan file terakhir dalam TAR besar?