Linux altında Windows ile uyumlu bir zip dosyası nasıl oluşturulur


49

Bir zip dosyasını tüm Windows kullanıcıları ziyaretçilerime sunabilmem gerekiyor, bu yüzden Unix zip komutuyla bir zip dosyası hazırladım (hadi bunu madeinlinux.zip diyelim).

WinRar veya Winzip ile başarılı bir şekilde açılıyor, ancak standart Windows zip dosyası işlemesini kullanan kullanıcılarım, sıkıştırmayı açmaya çalışırken başarısız oluyor. (Windows XP)

Windows yerleşik zip mekanizması kullanarak aynı verileri sıkıştırdım ve Linux açısından, dosya türünde hiçbir fark göremiyorum:

$ file madeinlinux.zip :  Zip archive data, at least v2.0 to extract
$ file madeinwindows.zip : Zip archive data, at least v2.0 to extract

Windows uyumlu bir zip dosyasına özel bir şey olmalılar.

Kimse ne biliyor mu?


1
Bu ZIP dosyalarından birini (kukla içerikli) oluşturabilir ve indirip inceleyebileceğimiz bir sunucuya koyabilir misiniz?
Bernhard Hofmann

Bu, henüz varsa, superuser.com için bir durum gibi görünüyor.

1
Elbette Bernhard, işte suçlu: careerjet.co.uk/devel/Services_Careerjet.zip

Test etmek zorunda olduğum tek Windows makine Windows 7 idi ve explorer kullanarak dosyayı açmakta ve çıkartmakta problem yaşamamıştı.

Windows 7'yi doldurun!

Yanıtlar:


28

İle deneyin:

zip -9 -y -r -q file.zip folder/
  • -9 En yavaş sıkıştırma hızını belirtir (en uygun sıkıştırma, sonek listesini yok sayar)
  • -y Sembolik bağları, bağlantıda belirtilen dosyayı sıkıştırmak ve saklamak yerine zip arşivinde saklayın.
  • -r Dizin yapısını tekrar tekrar gezmek
  • -q Sessiz mod

Bu neden XP uyumluluğuna yardımcı oldu?
Wowfunhappy

Açıkçası o kadar uzun zaman önceydi ki net bir şekilde hatırlamıyorum; ama sembolik bağları takip etmenin sorunlara yol açabileceğini (bu olmadan gerçekleşebilecek -r) ve -rtüm klasör içeriğini almanıza izin verebileceğini hayal edebiliyorum
Igor Fobia

11

7zip , Linux, FreeBSD, Mac OS X, BeOS, DOS, Amiga ve Windows üzerinde çalışan açık kaynaklı bir sıkıştırma aracıdır.

Windows sürümüne göre tavsiye ederim.

Destekler

Paketleme / açma: 7z, ZIP, GZIP, BZIP2 ve TAR

Sadece ambalajın açılması: ARJ, CAB, CHM, CPIO, DEB, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIM, XAR ve Z.


7
Şu anda tüm platformlarda bulunan bu inanılmaz derecede yaygın olan yardımcı program (zip dosyası) için başka bir 3. parti özel araç kullanmamanızı tavsiye ederim.
Rick O'Shea

8

İlgili görünen tek şey bu

-k - Attempt  to  convert  the  names  and paths to conform to MSDOS, store only the MSDOS attribute (just the user write attribute from UNIX), and mark the entry as made under
MSDOS (even though it was not); for compatibility with PKUNZIP under MSDOS which cannot handle certain names such as those with two dots.

ama başka bir yere gitmeden önce sisteminizde "man zip" yazıyor musunuz?


1
Selam. Öneri için teşekkürler, fakat bu -k seçeneği zaman içinde biraz fazla zaman alıyor. Tüm dosya isimlerini 8 karakterde / no case versiyonunda dönüştürür :(

Evet, o günleri hatırlıyorum. Ancak dosyanın Windows'taki yerleşik Zip programı tarafından okunmasına yardımcı oldu mu?

Bilmiyorum. Bu dosya adı sorunu

Tahminim, MSalters’in dediği gibi, bu bir sıkıştırma ...

8

zip -Zsıkıştırma seçeneğini ayarlar. -Z storeEn önemsiz olanı, hiç sıkışmadığı için. Bu, zipalternatif olarak tarveya sorun giderme sırasında kullandığınızda kullanışlıdır . Bu durumda, sıkıştırılmamış bir arşivin Windows'tan kullanılıp kullanılamayacağını görmeye çalışmalısınız. Bu takdirde ise kullanışlı, size varsayılan olmayan bir sıkıştırma seçeneği seçmek gerekecek biliyoruz.


harika, ben de sorun yaratıyor sıkıştırma algoritması olduğunu tahmin ediyorum ...

4

Diğerlerinin önerdiğine ek olarak, bu önemli bir öneme sahiptir. Windows dosya yolunu ve adlarını mutlaka sevmediğinden , dosya ve dizin adlarınıza dikkat edin . Sıkıştırma sırasında bazen onlardan farklı şekilde kaçar. Örnekler sayısız, fakat en önemlisi nokta dosyalarıdır (. Ve ..), sadece büyüklük farkına sahip dosyalar (name.txt ve NAME.txt), mutlak dosya yolları (/tmp/file.txt) . Windows'ta dosya adlarında izin verilen bazı diğer karakterler, Windows Gezgini'nin dosyaları açmak için kullanıldığında sorunlara neden olabilir. Benim durumumda ':' karakteri anlaşma kırıcıydı, ancak bunu bulmak için çok çalıştım.

Bu yüzden çok fazla parametre kullanmaya devam etmeden önce basit bir prosedür izlemenizi öneririm:

  1. Klasörü bulun veya sıkıştırdığınız dosyayı bulun.

  2. run: zip -9 -r -k zip- değiştirilmiş- isimleri.zip / yol / dizin / klasör

  3. Konsolun ne yaydığına dikkat edin. Benim durumumda ':' dosya isimlerinden çıkarıldı.
  4. Zip dosyasını bir windows makinesine taşıyın ve açmayı deneyin.

Bu işe yararsa, -k seçeneğiyle çıkardığınız karakterleri dosya / dizin adlarınızdan silmek daha iyi olabilir; normalde sıkıştırmayı deneyin. -K gibi bazı parametrelerin yan etkileri olduğuna dikkat edin. Bu durumda -k, -q seçeneğiyle çelişir (sym linkleri için).

Ayrıca -k seçeneği dosya adlarınızı okunamaz hale getirebilir. Benim durumumda, dosyalarım gerekli kaydı arşivlerden kolayca bulmayı kolaylaştırmak için yaratma zamanına (örneğin, 10: 55: 39.pdf) dayanıyordu, ancak -k seçeneği bunu 105539.pdf'ye çevirdi, bu kullanıcılar tarafından kolayca okunamıyordu. Bu nedenle isimleri, Windows'ta -k seçeneğini kullanmadan açan ancak yine de okunabilen 10_55_39.pdf olarak değiştirdim.


1
@ TD.512 6 yaşındaki sorunun hala kesin bir cevabı olmadığını farkettiniz mi? Başka bir cevap eklemek için en iyisi, eğer cevap başkalarına yapmadığı gibi birine yardım etmek istiyorsa.
Hi-Angel

3

Son zamanlarda perl betiğinden üretilen dosyalarda da benzer bir sorun vardı. Yerel pencerelerin zip'inin (yalnızca Windows 7'de test edildiğini) hatalı bir şekilde satır başındaki eğik çizgiyle işlediğini ve boş bir zip dosyası görüntülediğini bulundu. Çözüm, dosya eklemeden önce baştaki kıskacı soymaktı. Belki linux zip komutunun bazı sürümleri, baştaki eğik çizgilere sahip dosya yollarını saklar.


2
App göre. Pkware sitesindeki notlar ( pkware.com/support/zip-app-note/archives ): "Dosyanın adı, isteğe bağlı göreceli yol. Saklanan yol bir sürücü veya aygıt harfi ya da baştaki boşluk içermemelidir. "
EKW

1

İşte bazı dosyaları sıkıştırmak için kullandığım bir python betiği. Ubuntu ve Vista'da test edilmiştir. Ubuntu'da oluşturulan bir zip Vista fermuarıyla açılır.

Geçmişte benzer bir sorun yaşadığımı ve zip formatının ZIP_DEFLATED olmadığından kaynaklandığını düşünüyorum. Emin değilim. Bunu kontrol edeceğim.

Umut ediyorum bu yardım eder

zip dosyasını içe aktar
ithalat glob, os, sys

sınıf ZipArchive:

    def zip_it (self, dirName, dosyalar):
        dirNamePrefix = dirName + "/ *"
        glob.glob içindeki dosya adı için (dirNamePrefix):
            eğer os.path.isfile (dosyaismi) ve (self.exclude_svn ya da (dosyaismi.find (". svn \\") == - 1)):
                dosya adını yazdır
                ad = dosya adı [len (self.folder) +1:]
                self.archive.write (dosya adı, ad, zipfile.ZIP_DEFLATED)

    def run (self, klasör, ad, exclude_svn):
        self.exclude_svn = exclude_svn
        self.folder = klasör
        self.archive = zipfile.ZipFile (ad + ". zip", "w")
        os.path.walk (kendi kendine klasör, ZipArchive.zip_it, kendi kendine)
        self.archive.close ()

eğer __name__ == "__main__":
    eğer (len (sys.argv) == 1):
        "kullanım zipit klasörü [isim] [svn: evet | hayır]" yazdır
    Başka:
        name = sys.argv [1]
        exclude_svn = Yanlış

        if (len (sys.argv)> 2): adı = sys.argv [2]
        if (len (sys.argv)> 3): exclude_svn = (sys.argv [3] == "hayır")

        arch = ZipArchive ()
        arch.run (sys.argv [1], adı, exclude_svn)
        "bitti" yazdır


soru şu, Windows zip mekanizması kullanılarak açılabilir mi?

Evet. Vista zip aracıyla açtım. İnşallah sizin için de işe

0

Muhtemelen Linux'tan Windows'a dosya aktarımında bir sorun vardır. FTP kullanıyorsanız, ikili aktarım ayarlamayı deneyin (Windows'ta dosyalarınızı Linux'tan Windows'a aktarmadan önce bin komutu).


Aynı fikirde olmamak, anlaşamamak. OP ile benzer sorunlar yaşadım, özellikle de Windows'un eski sürümleriyle. Bütünlük kontrolleri yaptım ve shasum eşleştirildi. Ayrıca OP'nin, dosyaların 3. parti programlarda düzgün bir şekilde açıldığını söylediğini unutmayın.
Wowfunhappy
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.