Linux / Unix'te .tar.gz, .zip'e karşı önemli mi?


69

Platformlar arası programlar bazen Unix sürümü için .tar.gz ve Windows sürümü için .zip olarak dağıtılır. Bu, her birinin içeriğinin farklı olması gerektiğinde anlamlıdır.

Bununla birlikte, içerikler aynı olacaksa, sadece bir indirme olması daha kolay olacaktır. Windows, .zip'i tercih eder, çünkü kutudan çıkardığı format budur. Unix için önemli mi? Yani, bugün Ubuntu Linux'ta bir dosyayı açmayı denedim ve iyi çalıştı; Unix benzeri herhangi bir işletim sisteminde bununla ilgili herhangi bir sorun var mı, ya da sadece pano boyunca bir .zip dosyası sağlamak uygun mudur?

Yanıtlar:


28

Necromancing.
Evet, önemli.
Aslında buna bağlı.

tar.gz

  • Unix dosya özniteliklerini depolar : uid, gid, izinler (en çok çalıştırılabilir). Varsayılan, dağıtımınıza bağlı olabilir ve seçeneklerle değiştirilebilir.
  • Arşivlenecek tüm dosyaları tek bir dosyada birleştirir ("Tape ARchive").
  • Gerçek sıkıştırma, bir .tar dosyasında GZIP tarafından yapılır.

zip

  • MSDOS niteliklerini saklar . (Arşiv, Salt Okunur, Gizli, Sistem)
  • Her dosyayı ayrı ayrı sıkıştırır, ardından ayrı ayrı sıkıştırılmış dosyaları bir dosyada birleştirir
  • Dosyanın sonuna bir dosya tablosu ekler

Zip, dosyaları tek tek sıkıştırdığından, bir zip arşivi büyük olasılıkla daha büyük bir boyuta sahip olacaktır (özellikle daha küçük dosyalarda - think config dosyaları).

Görüyorsunuz, Linux / Unix'te bir sürü dosyayı sıkıştırırsanız ve daha sonra bunları çıkarırsanız, dosya boyutundan appart görürsünüz, dosya öznitelikleri kaybolur (en azından MS-DOS tarafından desteklenmeyenlere - hangi ZIP'a bağlıdır) -yazılım kullandığınız). Bu önemli olabilir veya olmayabilir, bu durumda önemli değildir (çünkü dosya boyutu farkı çoğu zaman göz ardı edilebilir).


10
unix benzeri sistemlerde zip'in standart dağıtımı (info-zip) ayrıca unix dosya özniteliklerini de depolar.
Erik Aronesty,

35

tar gz, Linux / Unix için, betiklerde "çalıştırılabilir" gibi izinleri sakladığından daha iyidir.


8
OS X'in Arşiv Yardımcı Programı ve zip / unzip izinleri korur, ancak yapmayan başka yardımcı programlar olabilir.
Lri

4
Standart zip / unzip araçları (info-zip) linux üzerindeki izinleri ve pencerelerdeki zaman damgalarını korur. bkz: en.wikipedia.org/wiki/Info-ZIP , istenen rastgele erişimi ve düzenlenebilir arşiv özelliklerini korurken, izin sorunlarını ve dosya boyutu sınırlamalarını aşan tipik yetenekler için.
Erik Aronesty,

33

Bugünlerde en popüler Linux dağıtımları, varsayılan olarak zipuyumlulukla donatılmıştır . Ancak nc3b tarafından belirtildiği gibi tarve gzipLinux / Unix sistemlerinde daha yaygındır. Bu sistemlerde% 95 uyumluluğa ihtiyacınız varsa, tarve 'yi kullanmayı düşünün gzip. Sadece% 85'e ihtiyacınız varsa, zipiyi yapacağız.


2
Tamam,% 95,% 85'ten daha iyidir :-) Çok küçük bir soru, dosya uzantısının .tar.gz yerine .tgz olması önemli midir?
rwallace

8
Uzantı hiç önemli değil, sadece kullanıcılar ve programlar tarafından referans almak için kullanılır. Eğer uzantı .XXX ise ve bunun .tar olduğunu biliyorsanız, hala kaldırmak için tar kullanabilirsiniz. .tgz ve .tar.gz aslında aynı uzantılardır ve bu uzantılara sahip dosyalar aynı olacaktır.
BloodPhilia

2
Öte yandan, Windows'ta% 100 uyumluluk için kabin kullanmanız gerekir.
kinokijuf

3
tar, unix sistemlerinde + x gibi uid, gid ve izinleri saklar. zip mağazalarında arşiv, salt okunur, gizli ve Windows sistemlerinde sistem.
Andrew De Andrade,

1
@mtak her zaman sadece kullanabilirsiniz gunzip --suffix .zip npm-debug.log.zipya dagunzip -c < npm-debug.log.zip > npm-debug.log
Iwan Aucamp

19

tar / gzip oldukça berbat bir formattır, çünkü arşivin tamamına arşivini açmak zorunda kalmadan, rastgele erişilemez, güncellenemez, doğrulanamaz ve hatta eklenemez.

zip bu konuda çok daha iyidir .... hızlıca bir zip dosyasının içeriğini elde edebilir, ilk kısmı yeniden sıkıştırmadan ekleyebilir vb.

zip kullandığınız "zip" sürümüne bağlı olarak ... bazı boyut sınırlamaları vardır ... ve bu bir sorun olabilir. ancak çoğu linux benzeri işletim sistemi ile birlikte gelen standart info-zip aracının boyut sınırlaması yoktur ve dosya izinlerini iyi korur.

Bakınız: yetenekler için https://en.wikipedia.org/wiki/Info-ZIP


Ne tür kısıtlamalardan bahsediyorsun?
Pacerier

düzenlendi ve bir bağlantı sağladı
Erik Aronesty

9

Barebones Unix kurulumları unzip içermez (yani sunucu kurulumları), fakat daima tar ve gzip içerirler . Hedef kitleniz sunucu ise gzip için giderdim .

Ayrıca gzip daha büyük sıkıştırma vardır zip , bu nedenle dosya küçük olacaktır.


1
Gzip’in ZIP’tan daha iyi sıkıştırdığını söylemem. Her ikisi de aynı DEFLATE algoritmasını kullanır ve yaptığım tüm karşılaştırmalar dosya boyutunda benzer sonuçlar verir.
yerçekimi

4
Peki, tar.gz tüm dosyayı tek seferde sıkıştırır, zip ise dosyaları tek tek sıkıştırır. Birçok küçük dosya için, ilk yaklaşım genellikle göze çarpan şekilde daha küçük dosyalar oluşturur, çünkü artıklıklar dosyalar arasında kullanılabilir. Fark olsa da büyük değil.
sleske,

3

Evet, önemli. Tar bir arşivcidir. Ve tar.gz'de bu arşivi sıkıştırıyoruz.

Zip hem bir arşivleyici hem de kompresördür.

Sıkıştırmayı karşılaştırırsanız, deneyimlerime göre gzip, zip'ten çok daha iyidir.

Ve diğer önemli fark başka bir cevapta belirtilmiştir . Çok büyük bir dosya arşiviniz varsa ve küçük bir dosyayı çıkartmak istiyorsanız, Zip bunu yapmanıza izin verir. Ancak tar.gz ile tüm arşivi çıkarmanız gerekir.


Bir gzipli dosya arşivi değil, bir adet arşivlenmiş dosya gzipsidir. Bu yüzden tüm arşivi çıkartmanız gerekiyor.
m93a

2

Karar temel olarak aşağıdakilere dayanıyor:

  • GZIP , dosyaların çalıştırılmasına izin verilen Unix dosya izinlerini tutar .

  • Öte yandan ZIP , Windows'taki kutunun dışında çalışıyor .


1

tarve gzip* nix-es'de olduğundan çok daha yaygındır unzip. Mesela şu an benim kemerimde-2009.08 yok unzip.


6
Fakat ZIP’ı iyi idare eden bir bsdtarkısmı var libarchive.
yerçekimi

Oops: "> Bunu bilmiyordum. Teşekkürler! :-)
nc3b
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.