Saya menggunakan tar
untuk mengarsipkan sekelompok file yang sangat besar (multi-GB) bz2
.
Jika saya gunakan tar -tf file.tar
untuk membuat daftar file dalam arsip, ini membutuhkan waktu yang sangat lama untuk diselesaikan (~ 10-15 menit).
Demikian juga, cpio -t < file.cpio
butuh waktu lama untuk menyelesaikan, plus atau minus beberapa detik.
Karenanya, mengambil file dari arsip (via tar -xf file.tar myFileOfInterest.bz2
misalnya) lambat.
Apakah ada metode arsip di luar sana yang menyimpan "katalog" yang tersedia dengan arsip, sehingga file individu dalam arsip dapat diambil dengan cepat?
Sebagai contoh, beberapa jenis katalog yang menyimpan pointer ke byte tertentu dalam arsip, serta ukuran file yang akan diambil (serta rincian khusus sistem file lainnya).
Apakah ada alat (atau argumen ke tar
atau cpio
) yang memungkinkan pengambilan file secara efisien dalam arsip?
Anda bisa menggunakan SquashFS untuk arsip semacam itu. ini
Satu-satunya kelemahan yang saya tahu adalah hanya baca.
http://squashfs.sourceforge.net/ http://www.tldp.org/HOWTO/SquashFS-HOWTO/whatis.html
sumber
Meskipun tidak menyimpan indeks,
star
konon lebih cepat daripadatar
. Plus itu mendukung nama file yang lebih panjang dan memiliki dukungan yang lebih baik untuk atribut file.Seperti yang saya yakin Anda sadari, dekompresi file membutuhkan waktu dan kemungkinan akan menjadi faktor dalam kecepatan ekstraksi bahkan jika ada indeks.
Sunting: Anda mungkin juga ingin melihatnya
xar
. Ini memiliki header XML yang berisi informasi tentang file dalam arsip.Dari halaman yang dirujuk:
sumber
star
turun ......Thorbjørn Ravn Anderser benar. Tar GNU secara default membuat arsip yang "dapat dicari". 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 dalam waktu yang dibutuhkan untuk membaca / menulis 7GB. Tanpa -n butuh lebih dari satu jam dan tidak menghasilkan apa-apa.
Saya tidak yakin bagaimana kompresi memengaruhi ini. Arsip saya tidak dikompresi.Arsip yang dikompresi tidak dapat "dicari" karena saat ini (1.26) GNU melepas kompresi ke program eksternal.sumber
Satu-satunya format arsip yang saya tahu menyimpan indeks adalah ZIP, karena saya harus merekonstruksi indeks yang rusak lebih dari sekali.
sumber
Itu tidak mengindeks yang saya tahu, tapi saya menggunakan dump & restore dengan file besar, dan menavigasi pohon pemulihan dalam mode interaktif untuk memilih file acak SANGAT cepat.
sumber
Anda dapat menggunakan format arsip / kompresi 7z (7zip) jika Anda memiliki akses ke
p7zip-full
paket.Di Ubuntu Anda dapat menggunakan perintah ini untuk menginstalnya:
Untuk membuat arsip yang dapat Anda gunakan
7z a <archive_name> <file_or_directory>
dan jika Anda tidak ingin mengompres file dan hanya ingin "menyimpan" apa adanya, Anda dapat menggunakan-mx0
opsi seperti:Anda kemudian dapat mengekstrak file menggunakan
7z e
:Atau Anda dapat mendaftar indeks arsip
7z l
yang berguna untuk mencarigrep
:Ini juga merupakan
t
opsi untuk menguji integritas,u
untuk menambah / memperbarui file ke arsip, dand
untuk menghapus file.CATATAN PENTING
Do tidak menggunakan format 7zip untuk linux filesystem backup karena tidak menyimpan pemilik dan kelompok file yang terdapat.
sumber
Saya percaya GNU tar mampu melakukan apa yang Anda inginkan, tetapi saya tidak dapat menemukan sumber daya definitif mengatakan demikian.
Bagaimanapun Anda membutuhkan format pengarsipan dengan indeks (karena itu akan memungkinkan Anda untuk melakukan apa yang Anda inginkan). Saya tidak percaya file ZIP bisa tumbuh sebesar itu, sayangnya.
sumber