60 votes

Comment créer un fichier zip compatible avec Windows sous Linux

J'ai besoin de mettre un fichier zip à la disposition de tous mes visiteurs utilisateurs de Windows, donc j'ai naïvement produit un fichier zip avec la commande zip d'Unix (appelons-le madeinlinux.zip).

Il s'ouvre avec succès avec WinRar ou Winzip, mais ceux de mes utilisateurs qui utilisent la gestion standard des fichiers zip de Windows rencontrent un échec lorsqu'ils essaient de le décompresser. (Windows XP)

J'ai compressé les mêmes données en utilisant le mécanisme zip intégré de Windows, et d'un point de vue Linux, je ne vois aucune différence dans le type de fichier :

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

Il doit s'agir de quelque chose de spécifique à un fichier zip compatible avec Windows.

Quelqu'un sait-il quoi ?

37voto

Dr Fabio Gori Points 490

Essayez avec :

zip -9 -y -r -q file.zip folder/
  • -9 Indique la vitesse de compression la plus lente (compression optimale, ignore la liste de suffixes)
  • -y Stocker les liens symboliques en tant que tels dans l'archive zip, au lieu de compresser et de stocker le fichier auquel fait référence le lien.
  • -r Parcourir la structure du répertoire de manière récursive
  • -q Mode silencieux

13voto

Jon Limjap Points 46429

7zip est un outil de compression open source qui fonctionne sous Linux, FreeBSD, Mac OS X, BeOS, DOS, Amiga et Windows.

Je le recommande vivement sur la base de la version Windows.

Il prend en charge

emballage / déballage : 7z, ZIP, GZIP, BZIP2 et TAR

Déballage uniquement : ARJ, CAB, CHM, CPIO, DEB, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RAR, RPM, UDF, WIM, XAR et Z.

9voto

MSalters Points 8049

zip -Z définit l'option de compression. -Z store est le plus trivial, car il ne compresse pas du tout. C'est utile lorsque vous utilisez zip comme alternative à tar ou lors du dépannage. Dans ce cas, vous devez essayer de voir si une archive non compressée est utilisable à partir de Windows. Si cela es utilisable, vous savez que vous devrez choisir une option de compression autre que celle par défaut.

8voto

Dan Rosenstark Points 6088

La seule chose qui semble pertinente est celle-ci

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

mais lisez bien "man zip" sur votre système avant d'aller ailleurs...

5voto

DavLink Points 2260

En plus de ce que les autres ont suggéré, il est important de faire attention à vos noms de fichiers et de répertoires car Windows n'aime pas nécessairement les chemins et les noms de fichiers de Linux. Il arrive aussi qu'il les échappe différemment lors de la compression. Les exemples sont nombreux, mais le plus important fichiers à points (. et ..), fichiers avec seulement des différences de casse (nom.txt et NOM.txt), chemins de fichiers absolus (/tmp/file.txt) . Certains autres caractères autorisés dans les noms de fichiers sous Windows peuvent poser des problèmes lorsque l'explorateur Windows est utilisé pour ouvrir des fichiers. Dans mon cas, le caractère ':' a été la cause du problème, mais il a fallu beaucoup de travail pour le découvrir.

Avant de vous lancer dans l'utilisation d'un grand nombre de paramètres, je vous suggère de suivre une procédure simple :

  1. Localisez le dossier ou le fichier à compresser.

  2. courir : zip -9 -r -k zip-noms-modifiés.zip /path/to/votre/dossier

  3. faites attention à ce que la console crache. Dans mon cas, les " :" dans les noms de fichiers ont été supprimés.

  4. Déplacez le fichier zip sur une machine Windows et essayez de l'ouvrir.

Si cela fonctionne, il est préférable de supprimer les caractères qui ont été supprimés par l'option -k de vos noms de fichiers/répertoires et d'essayer de les compresser normalement. Notez que certains paramètres, comme -k, ont des effets secondaires. Dans ce cas, -k est en contradiction avec l'option -q (pour les liens sym).

L'option -k peut également rendre vos noms de fichiers illisibles. Dans mon cas, mes fichiers étaient nommés en fonction de l'heure de création (par exemple 10:55:39.pdf) pour faciliter la localisation de l'enregistrement requis dans les archives, mais l'option -k l'a transformé en 105539.pdf, ce qui n'est pas facilement lisible par les utilisateurs. J'ai donc changé les noms en 10_55_39.pdf qui s'ouvre sous Windows sans utiliser l'option -k mais qui est toujours lisible.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X