İki farklı fakat ilgili görev vardır. Bir dosya ağacının (dosya adları, dizin yapısı, dosya sistemi izinleri, sahiplik ve diğer meta veriler dahil) bir bayt akışına paketlenmesine arşivleme denir
. Daha küçük bir bayt akışı üretmek için bir bayt akışındaki fazlalığın kaldırılmasına sıkıştırma adı verilir .
Unix'te iki işlem, her biri için ayrı araçlarla ayrılır. Diğer birçok platformda (mevcut ve geçmiş) birleştirilmiş araçlar hem arşivleme hem de sıkıştırma gerçekleştirir.
(gzip ve gzip'in arayüzünü taklit eden diğer programlar genellikle orijinal dosya adını sıkıştırılmış çıktıda saklama seçeneğine sahiptir, ancak bu, bir CRC veya bozulmayı tespit etmek için başka bir kontrolle birlikte depolayabilecekleri tek meta veridir.)
Sıkıştırmayı arşivlemeden ayırmanın avantajları vardır. Arşivleme platforma özgüdür (korunması gereken dosya sistemi meta verileri büyük ölçüde değişir), ancak uygulama basittir, büyük ölçüde G / Ç'ye bağlıdır ve zamanla çok az değişir. Sıkıştırma platformdan bağımsızdır, ancak uygulamalar CPU'ya bağlıdır ve algoritmalar, modern donanımın soruna katlanabileceği artan kaynaklardan yararlanmak için sürekli olarak gelişmektedir.
En popüler Unix arşivleyicisi, ve tar
gibi başkaları olmasına rağmen . (Debian paketler ise arşivleri,
genellikle açmasının Ramdisk'ler için kullanılmaktadır.) Ya da sık sık örneğin, sıkıştırma araçları ile kombine edilmiştir (.Z), (Gz),
(.bz2) ve eski gelen genç (.xz), ve tesadüfen en kötüden en iyi sıkıştırmaya değil.cpio
ar
ar
cpio
tar
compress
gzip
bzip2
xz
Bir tar
arşiv oluşturmak ve sıkıştırmak farklı adımlardır: kompresör tar
dosya formatı hakkında hiçbir şey bilmez . Bu, sıkıştırılmış bir tar
arşivden tek bir dosyanın çıkarılmasının , önceki dosyaların tümünün sıkıştırılmasını gerektirdiği anlamına gelir . Buna genellikle "katı" arşiv denir.
Aynı şekilde, katran bir "akış" formatı - bir boru hattında yararlı olması için gerekli olduğundan - katran arşivinde küresel bir dizin yoktur ve katran arşivinin içeriğini listelemek de onu çıkarmak kadar pahalıdır.
Buna karşılık, Zip ve RAR ve 7-zip (modern Windows platformlarındaki en popüler arşivciler) genellikle her dosyayı ayrı ayrı sıkıştırır ve meta verileri hafifçe sıkıştırır. Bu, bir arşivdeki dosyaların ucuz bir şekilde listelenmesine ve tek tek dosyaların çıkarılmasına izin verir, ancak sıkıştırmayı artırmak için aynı arşivdeki birden fazla dosya arasındaki fazlalıktan yararlanamayacağı anlamına gelir. Genel olarak zaten sıkıştırılmış bir dosyayı sıkıştırmak dosya boyutunu daha da azaltmazken, bazen bir zip dosyası içinde bir zip dosyası görebilirsiniz: ilk zipping, çok sayıda küçük dosyayı büyük bir dosyaya dönüştürdü (muhtemelen sıkıştırma devre dışı bırakılmışsa). sonra tek bir varlık olarak sıkıştırılır.
Farklı platformlar ve felsefeler arasında çapraz tozlaşma vardır: gzip
esasen zip
arşivleyicisi olmayan kompresördür ve xz
esas 7-zip
olarak arşivleyicisi olmayan kompresörüdür.
Başka, özel kompresörler de var. PPM varyantları ve ardılları ZPAQ
, kaynak tüketimine bakılmaksızın maksimum sıkıştırma için optimize edilmiştir. Onlara atabildiğiniz kadar CPU ve RAM'i kolayca çiğneyebilirler ve dekompresyon tıpkı sıkıştırma kadar vergilendirir (kontrast için en yaygın kullanılan sıkıştırma araçları
asimetriktir : açma, sıkıştırmaktan daha ucuzdur).
Spektrumun diğer ucunda lzo
, snappy
ve LZ4
sıkıştırma pahasına maksimum hız ve minimum kaynak tüketimi için tasarlanmış "hafif" kompresörler vardır. Dosya sistemlerinde ve diğer nesne depolarında yaygın olarak kullanılırlar, ancak bağımsız araçlar gibi daha az kullanılırlar.
Peki hangisini seçmelisin?
arşivleme:
Ubuntu'da tar
olduğunuzdan, başka bir yerde kolayca okunabilen dosyalar yapmaya çalışmadığınız sürece arşivleme dışında hiçbir şey kullanmanın gerçek bir nedeni yoktur .
zip
her yerde bulunma zorluğu, ancak Unix merkezli değildir ve dosya sistemi izinlerinizi ve sahiplik bilgilerinizi korumaz ve pişmiş sıkıştırması eskidir. 7-zip ve RAR (ve ZPAQ) daha modern sıkıştırmaya sahiptir, ancak Unix dosya sistemlerini arşivlemek için eşit derecede uygun değildir (ancak bunları sadece kompresör olarak kullanmanızı engelleyen hiçbir şey olmamasına rağmen); RAR da tescilli.
Sıkıştırma:
Maksimum sıkıştırma için, http://mattmahoney.net/dc/text.html adresindeki muazzam gibi bir karşılaştırmaya bakabilirsiniz . Bu size ilgili ödünleşmeler hakkında daha iyi bir fikir verecektir.
Yine de muhtemelen maksimum sıkıştırma istemezsiniz. Çok pahalı.
xz
modern Unix sistemlerinde en popüler genel amaçlı sıkıştırma aracıdır. Ben 7-zip yakından ilişkili olduğu gibi, xz dosyalarını da okuyabileceğine inanıyorum.
Son olarak: kısa süreli depolama dışında herhangi bir şey için veri arşivliyorsanız, daha sonra baş ağrısını en aza indirmek için açık kaynaklı ve tercihen yaygın bir şey seçmelisiniz.