UNIX’teki dosyaların sıkıştırılması ve açılması


0

Lütfen zip, gz, tar, .... normal bir metin dosyası yardımcı olur ve boyutunu küçültür bir tane kullanmak için recamand.

unix 

2
kullanım man kendi önerileriniz üzerine ( zip, gzip, tar ) Daha fazla bilgi edinmek için.
Yoni H

Yanıtlar:


3

Sıkıştırma programları

Bazı klasik ancak eski moda komutlar dahil, saf sıkıştırma araçları:

  • paketi (açmak, pcat) - uzatma.
  • sıkıştır (sıkıştır) - uzantısı .Z
  • gzip (gunzip, gzcat, ...) - uzatma .gz
  • bzip2 (bunzip2, bzcat, ...) - uzatma .bz2
  • xz (unxz, xzcat, ...) - uzantısı .xz

arşivleme

Ayrı olarak, arşivleyiciler de var - birkaç dosyayı bir araya getirerek tek bir çıktıda toplayan programlar (bu bir teyp dosyası olabilir, ancak daha fazla değildir). Bunlar şunları içerir:

  • ar - arşiv
  • tar - kaset arşivi
  • cpio - Unix Sistem III arşivleyicisi
  • pax - cpio ve katranın POSIX melezi

Ve sonra Windows kaynaklı karma bir program var:

  • zip - arşiv ve sıkıştır

Günümüzde, GNU Tar sıkıştırma ve arşivlemeyi kaldırabilir, bu yüzden genellikle arşivleme için tercih edilen bir araçtır.

Sıkıştırma programlarının karşılaştırılması

Kompresörleri görünüm sırasına göre sıraladım, bu aynı zamanda verimliliği arttırma sıralamasıydı. Orijinal paket, modern standartlara göre oldukça zayıftı; sıkıştır paketi adil bir farkla sıkıştırabilir. Bununla birlikte, sıkıştırılmış sıkıştırmayı hatırı sayılır bir oranda sıkıştırın ve neredeyse her zaman oldukça uzun bir süre kullanıldı, çünkü neredeyse her zaman olduğu kadar iyiydi. Birçok yazılım arşivinde kullanılan standart sıkıştırmadır - CPAN (Kapsamlı Perl Arşiv Ağı) örneğin gzipli tar dosyaları kullanır, örneğin GNU da yakın zamana kadar kullandı, fakat şimdi bazen xz veya bzip2 dosyalarını da sağlıyorlar. Bzip2, gzip'i sıkıştırır - yeni bir kompresörün kabul görmesi daha iyi olmalı ve bunun için doğrudan destek GNU Tar'ın en son sürümlerine dahil edilmiştir. Son olarak, xz göreceli olarak yeni bir katılımcıdır (belki de son 2-3 yıl), fakat diğer her şeyi dışarı sıkıştırır.

Zip, sıkıştırma sırasına yaklaşık olarak gzip veya bzip2 ile aynı seviyede sığar; oldukça iyi bir sıkıştırma, ancak Windows kaynaklı ve standart bir sistemdi. Ancak, Unix için zip'i açabilir ve açabilirsiniz (tıpkı Windows için diğer programları alabileceğiniz gibi). Bu nedenle, zip dosyaları bir Windows yönünü belirtme eğilimindedir.

Hem paket hem de sıkıştırma işlevsel olarak eskimiş durumdadır - ancak yine de gzip tarafından tanınırlar ve onun tarafından çıkarılabilirler. Varlıkları 'z' notasyonunun nereden geldiğini ve neden 'z' nin kullanılmadığını açıklar.

arşivleme

cpio

Bazı açılardan, cpio programı tar format kasetlerinden daha üstündü (ve aslında, tar için çoklu formatlar var, ancak bu detaylar için endişelenmenize gerek bile yok). En dikkat çeken fark, cpio'nun standart girdiden yedeklenecek dosyaların adlarını okumasıydı - satır başına bir ad. Bu, bir dizini yedeklerken seçici olmayı mümkün kıldı. Buna karşılık, tar dizinin adı verilir ve altındaki her şeyi yedekler (GNU Tar olmadığı ve öğeleri dışlaması söylenmediği sürece). Malzemeyi bir yerden başka bir yere kopyalamak için cpio'yu 'pass' modunda (cpio -p) kullanabilirsiniz. Ancak, GNU Tar dosyadan dosya okuma fonksiyonelliğini üstlenmiştir ve kullanımı daha kolay ve daha yaygın olarak kullanılabilir.

Cpio'nun bir başka avantajı, değişken uzunluklu dosya başlıkları kullanmasıydı, buna karşın katran sabit uzunluklu dosya başlıkları kullanmasıydı. Bu günlerde, her şey sıkıştırıldığında, katran başlığındaki boş alan sorun olmaz - diskte en fazla birkaç bayt olmasıyla sonuçlanır. Cpio formatlarının bir dezavantajı, ikisinin de olmasıydı - ve ikili format platforma özeldi. Her zaman taşınabilir karakter biçimini kullandığınız sürece, hiçbir sorun yoktu.

Bu günlerde muhtemelen cpio kullanmayacaksınız, ancak geçiş modu hala aşina olduğunuzda faydalıdır.

find . -name '*.[ch]' -print |
cpio -pdmB /some/where/else

GNU Tar'daki eşdeğeri:

find . -name '*.ch' -print |
tar -cf - -T - |
tar -xf - -C /some/where/else

kişilik

Orijinal (1988) POSIX standardı, tar - cpio üzerinden savaş sürdüğü bir zamanda üretildi ve pax, POSIX arşiv formatı ve ödün veren bir programdı. Ancak, hiçbir zaman yaygın olarak kullanılmadı - katran veya cpio olmamaktan acı çekti. Savaşan kamplar arasında barış getirmesi amaçlandı; başarılı olamadı.

GNU Tar, çeşitli pax formatlarını (iki versiyon) destekler.

GNU Tar

GNU Tar, arşiv oluştururken kullanılacak sıkıştırma algoritmasını belirlemenizi ve arşivden çıkartırken (bilinen) biçimleri otomatik olarak algılamanızı sağlar. Dolayısıyla:

tar -czf /tmp/wotnot.tar.gz some-sub-directory
cd /some/other/place
tar -xf  /tmp/wotnot.tar.gz

Bu, gzip sıkıştırması kullanır. .Tgz uzantısı ayrıca, gziplenmiş tar dosyalarını belirtmek için kullanılır:

tar -czf /tmp/wotnot.tgz some-sub-directory
cd /some/other/place
tar -xf  /tmp/wotnot.tgz

Gunzip'i bir .tgz dosyasında kullanırsanız, geride bir .tar dosyası alırsınız; o zaman dosyayı gzip ederseniz, bir .tar.gz dosyası alırsınız.

Bzip2 sıkıştırmasını kullanmak için:

tar -cjf /tmp/wotnot.tar.bz2 some-sub-directory
cd /some/other/place
tar -xf  /tmp/wotnot.tar.bz2

Xz sıkıştırmasını kullanmak için:

tar -cf /tmp/wotnot.tar.xz --use-compress-program=xz some-sub-directory
cd /some/other/place
tar -xf /tmp/wotnot.tar.xz --use-compress-program=xz

AFAIK, bunu otomatik olarak yapmak için bir GNU Tar seçeneği yoktur (xz sıkıştırma). ('-J' seçeneği GNU Tar'a nispeten yeni bir eklemedir.) Herhangi bir sıkıştırma programını 'ile belirleyebilirsiniz. --use-compress-program 'gzip, bzip2 ile aynı genel arayüze uyduğu sürece - ve xz buna uyuyor. Varsayımsal bir sıkıştırma programı olan 'fermuar' için:

zipper -c     -- compresses standard input to standard output
zipper -d     -- decompresses
zipper -c -d  -- decompresses standard input to standard output

GNU Tar'ın bir tuhaflığı: Orijinal tar programı, Unix'in ilk günlerinde, '-option' notasyonu standartlaştırılmadan önce yazılmıştı. Sonuç olarak, ilk tar seçeneğinin önündeki çizgi, bugün için isteğe bağlıdır. İnsanların kullandığını göreceksiniz ' tar cvf /tmp/tarfile . 'veya çizgi olmadan eşdeğeri.


Hangi komutu kullanmalı?

Hedef kitlenize bağlıdır. Windows'takiler zip gibi. Windows için amaçlanan materyaller bu formatı kullanmalıdır.

Öncelikle Unix'te ve türevlerinde çalışanlar zip konusunda istekli değillerdir: bunun yerine GNU Tar kullanın. En yaygın güvenilir sıkıştırma için, gzip kullanın. Kitleniz çoğunlukla güncelse, bunun yerine bzip2 kullanmayı düşünün. Onlara dikte edebiliyorsanız, xz kullanın çünkü dosyaları çok büyük oranda azaltır - diğerlerinden daha iyidir.

Başkalarının indirmesi için dosya sağlıyorsanız, birkaç biçim sağlamak bir nezaket; insanlar istediklerini seçebilirler.

Tek bir dosyayı sıkıştırmak için xz veya bzip2 kullanırdım.


Sadece bir nitpick, ancak "zip" Windows'ta değil, MS-DOS'ta kaynaklandı.
Jules

1

zip , gzip (gz) ve katran hepsi bir dosyayı sıkıştırabilir ancak farklılıklar vardır.

zip birkaç dosyayı sıkıştırabilir ve bunları bir araya getirebilir .zip Orijinal dosyaları yalnız bırakarak -file.
gzip diğer yandan bir tane yaratır .gz dosya başına ve orijinal tutma izinlerini / sahipliğini aynı tutar.
tar sadece bir dosya paketleyicisiydi. Girişi alır ve bir tane yapar .tar -dosya tutma dizini yapısını ve izinlerini içeren dosya. Daha sonra normalde sıkıştırma sıkıştırması eklediler. -z seçenek kullanılır (bu, gzip)

Çekmemek için zorlayıcı bir nedeniniz yoksa zip kullanmanızı öneririm. Çoğu (tümü) işletim sistemlerinde desteklenir.


1
Birincil gelişim izleyici kitlesi Unix veya türevlerinden biri üzerinde çalışıyorsa, zip kullanmamanızı tavsiye ederim. Zip kullanmak zorunda kaldığımda beni rahatsız ediyor; satır sonlarını dönüştürmek zorunda kalırsam bu beni iki kez rahatsız ediyor. Bu, konuşma sorununun geçerli olmadığını söylemek değildir - Windows merkezli olanlar zip'yi tercih eder (Cygwin veya MingW veya benzeri bir şey yüklü değilse ve bir Unix arka planından gelmiyorsa). Bu nedenle, amaç ve hedef kitleye bağlıdır.
Jonathan Leffler
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.