it-swarm.asia

Cara membuat file Zip yang kompatibel dengan Windows di Linux

Saya perlu membuat file Zip tersedia untuk semua pengunjung pengguna Windows saya, jadi saya secara naif menghasilkan file Zip dengan perintah Unix Zip (sebut saja madeinlinux.Zip).

Ini berhasil dibuka dengan WinRar atau Winzip, tetapi pengguna saya yang menggunakan penanganan file Windows Zip standar mengalami kegagalan ketika mencoba unzip. (Windows XP)

Saya memampatkan data yang sama menggunakan mecanism Zip bawaan Windows, dan dari sudut pandang Linux, saya tidak bisa melihat perbedaan dalam tipe file:

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

Itu pasti sesuatu yang spesifik untuk file Zip yang kompatibel dengan Windows.

Adakah yang tahu?

47
user3213

Coba dengan:

Zip -9 -y -r -q file.Zip folder/
  • -9 Menunjukkan kecepatan kompresi paling lambat (kompresi optimal, abaikan daftar sufiks)
  • -y Simpan tautan simbolis seperti itu di arsip Zip, alih-alih mengompresi dan menyimpan file yang dirujuk oleh tautan
  • -r Perjalanan struktur direktori secara rekursif
  • -q Mode diam
26
Igor Fobia

7Zip adalah alat kompresi sumber terbuka yang bekerja di Linux, FreeBSD, Mac OS X, BeOS, DOS, Amiga dan Windows.

Saya akan sangat merekomendasikannya berdasarkan versi windows.

Ini mendukung

packing/membongkar: 7z, Zip, GZIP, BZIP2 dan TAR

Hanya membongkar: ARJ, CAB, CHM, CPIO, DEB, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIM, XAR, dan Z.

11
Bruce McLeod

Zip -Z menetapkan opsi kompresi. -Z store adalah yang paling sepele, karena tidak kompres sama sekali. Ini berguna ketika Anda menggunakan Zip sebagai alternatif untuk tar, atau saat pemecahan masalah. Dalam hal ini Anda harus mencoba untuk melihat apakah arsip yang tidak terkompresi dapat digunakan dari Windows. Jika itu dapat digunakan , Anda tahu bahwa Anda harus memilih opsi kompresi yang tidak standar.

8
MSalters

Satu-satunya hal yang terlihat relevan adalah ini

-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.

tapi baca "man Zip" di sistem Anda sebelum pergi ke tempat lain ...

7
Dan Rosenstark

Selain apa yang orang lain sarankan, penting perhatikan file dan nama direktori Anda karena Windows tidak selalu menyukai jalur dan nama file Linux. Kadang-kadang juga lolos mereka berbeda saat ritsleting. Contohnya banyak, tetapi yang paling penting file dot (. Dan ..), file dengan hanya perbedaan huruf (nama.txt dan NAME.txt), path file absolut (/tmp/file.txt ) . Beberapa karakter lain yang diizinkan dalam nama file di Windows dapat menyebabkan masalah ketika Windows Explorer digunakan untuk membuka file. Dalam kasus saya karakter ':' adalah pemecah kesepakatan tetapi butuh banyak pekerjaan untuk mengetahuinya.

Jadi sebelum Anda melanjutkan menggunakan banyak parameter, saya sarankan ikuti prosedur sederhana:

  1. Temukan folder atau file zip Anda.

  2. jalankan: Zip -9 -r -k Zip-modified-names.Zip/path/ke/folder/Anda

  3. perhatikan apa yang dimuntahkan konsol. Dalam kasus saya ':' dalam nama file dihapus.
  4. Pindahkan file Zip ke mesin windows dan coba membukanya.

Jika ini berhasil, Anda mungkin lebih baik menghapus karakter yang telah dihapus oleh opsi -k dari nama file/direktori Anda coba zipping secara normal. Catat beberapa parameter seperti -k memiliki efek samping. Dalam kasus ini -k bertentangan dengan opsi -q (untuk tautan sym).

Juga opsi -k dapat membuat nama file Anda tidak dapat dibaca. Dalam kasus saya, file saya dinamai berdasarkan waktu pembuatan (mis. 10: 55: 39.pdf) untuk memudahkan mencari catatan yang diperlukan dari arsip, tetapi opsi -k mengubahnya menjadi 105539.pdf yang tidak mudah dibaca oleh pengguna. Karenanya saya mengubah nama menjadi 10_55_39.pdf yang terbuka pada Windows tanpa menggunakan opsi -k tetapi masih dapat dibaca.

4
Shakus

Punya masalah serupa baru-baru ini dengan file yang dihasilkan dari skrip Perl. Menemukan bahwa windows asli Zip (hanya Windows 7 yang diuji) secara tidak benar menangani jalur dengan garis miring terkemuka dan menampilkan file zip kosong. Solusi adalah menghapus garis miring sebelum menambahkan file. Mungkin beberapa versi path file store perintah linux zip dengan garis miring terkemuka.

3
Nicholas Hardy

Berikut ini adalah skrip python yang saya gunakan untuk Zip beberapa file. Ini telah diuji di ubuntu dan Vista. Zip yang dihasilkan di Ubuntu terbuka dengan ritsleting Vista.

Saya pikir saya memiliki masalah yang sama di masa lalu dan itu karena format Zip tidak Zip_DEFLATED. Saya tidak yakin. Saya akan periksa itu.

Saya harap ini membantu

 import zipfile 
 import glob, os, sys 
 kelas ZipArchive: 
 
 def Zip_it (self, dirName, file) : 
 dirNamePrefix = dirName + "/ *" 
 untuk nama file di glob.glob (dirNamePrefix): 
 jika os.path.isfile (nama file) dan (bukan self.exclude_svn atau ( filename.find (". svn \\") == - 1)): 
 cetak nama file 
 name = nama file [len (self.folder) +1:] 
 sendiri .archive.write (nama file, nama, zipfile.Zip_DEFLATED) 
 
 def run (mandiri, folder, nama, exclude_svn): 
 self.exclude_svn = exclude_svn 
 self.folder = folder 
 self.archive = zipfile.ZipFile (nama + ". Zip", "w") 
 os.path.walk (self.folder, ZipArchive.Zip_it, self) 
 self.archive.close () 
 
 jika __== "__main __": 
 if (len (sys.argv) == 1): 
 cetak "folder zipit penggunaan [nama] [svn: ya | tidak]" 
 lainnya: 
 name = sys.argv [1] 
 exclude_svn = Salah 
 
 if (len (sys.argv)> 2): name = sys.argv [2] 
 if (len (sys.argv)> 3): exclude_svn = (sys.argv [3] == "no") 
 
 Arch = ZipArchive () 
 Arch. jalankan (sys.argv [1], nama, exclude_svn) 
 cetak "selesai" 
 
1
luc

Mungkin ada masalah dalam pemindahan file Anda dari Linux ke Windows. Jika Anda menggunakan FTP, coba tetapkan transfer biner (perintah bin di Windows, sebelum pemindahan file dari Linux ke Windows).

0