Comment diviser un fichier .zip en plusieurs segments?

27

J'ai tous les utilitaires de ligne de commande installés et j'ai besoin de diviser un .zip(ou) nouveau (s) fichier (s) existant (s) en .zipsegments (50 Mo) dans Terminal.

Ex: dossier X = 900 Mo> Créer une .ziparchive auto-extractible> Fractionner l' .ziparchive en segments de 50 Mo (ie Folder.X.001.zip)

Selon la page de manuel, voici les commandes:

Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
Zip 3.0 (July 5th 2008). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
  The default action is to add or replace zipfile entries from list, which
  can include the special name - to compress standard input.
  If zipfile and list are omitted, zip compresses stdin to stdout.
  -f   freshen: only changed files  -u   update: only changed or new files
  -d   delete entries in zipfile    -m   move into zipfile (delete OS files)
  -r   recurse into directories     -j   junk (don't record) directory names
  -0   store only                   -l   convert LF to CR LF (-ll CR LF to LF)
  -1   compress faster              -9   compress better
  -q   quiet operation              -v   verbose operation/print version info
  -c   add one-line comments        -z   add zipfile comment
  -@   read names from stdin        -o   make zipfile as old as latest entry
  -x   exclude the following names  -i   include only the following names
  -F   fix zipfile (-FF try harder) -D   do not add directory entries
  -A   adjust self-extracting exe   -J   junk zipfile prefix (unzipsfx)
  -T   test zipfile integrity       -X   eXclude eXtra file attributes
  -y   store symbolic links as the link instead of the referenced file
  -e   encrypt                      -n   don't compress these suffixes
  -h2  show more help

avec -h2je reçois:

Splits (archives created as a set of split files):
  -s ssize  create split archive with splits of size ssize, where ssize nm
              n number and m multiplier (kmgt, default m), 100k -> 100 kB
  -sp       pause after each split closed to allow changing disks
      WARNING:  Archives created with -sp use data descriptors and should
                work with most unzips but may not work with some
  -sb       ring bell when pause
  -sv       be verbose about creating splits
      Split archives CANNOT be updated, but see --out and Copy Mode below

.....

Using --out (output to new archive):
  --out oa  output to new archive oa
  Instead of updating input archive, create new output archive oa.
  Result is same as without --out but in new archive.  Input archive
  unchanged.
      WARNING:  --out ALWAYS overwrites any existing output file
  For example, to create new_archive like old_archive but add newfile1
  and newfile2:
    zip old_archive newfile1 newfile2 --out new_archive
  Cannot update split archive, so use --out to out new archive:
    zip in_split_archive newfile1 newfile2 --out out_split_archive
  If input is split, output will default to same split size
  Use -s=0 or -s- to turn off splitting to convert split to single file:
    zip in_split_archive -s 0 --out out_single_file_archive
      WARNING:  If overwriting old split archive but need less splits,
                old splits not overwritten are not needed but remain
Hennes
la source

Réponses:

39

Vous devez existing.zipmais vous voulez le diviser en 50Mparties dimensionnées.

zip existing.zip --out new.zip -s 50m

va créer

new.zip
new.z01
new.z02
new.z03
....

Pour les extraire, vous devez d'abord rassembler les fichiers ensemble et exécuter zip -F new.zip --out existing.zipou zip -s0 new.zip --out existing.zip, pour recréer votre fichier existing.zip. Ensuite, vous pouvez simplement unzip existing.zip.


Vous vous attendriez à unzip new.zipce que cela fonctionne, mais malheureusement, il n'est pas mis en œuvre

warning [new.zip]:  zipfile claims to be last disk of a multi-part archive;
  attempting to process anyway, assuming all parts have been concatenated
  together in order.  Expect "errors" and warnings...true multi-part support
  doesn't exist yet (coming soon).

et dans mes tests, concaténer les parties comme il le suggère, c'est-à-dire avec cat, et exécuter décompresser, n'a pas réussi à extraire tous mes fichiers .

Daniel Beck
la source
1
J'ai pu extraire mes données des fichiers .zip divisés (créés avec Zip 3.0 sur la ligne de commande Mac OS X 10.11) en utilisant 7-Zip fonctionnant sous Windows sur une machine virtuelle. Je viens de pointer 7-Zip sur le fichier new.zip dans un dossier partagé et cela a fonctionné comme un charme.
User5910
3
Bien que vous ne puissiez pas simplement l'utiliser unzip new.zip, vous pouvez simplement cliquer sur new.zipmacOS et tout fonctionne. Merci!
Dan Rosenstark
4

Voici ce qui fonctionne pour moi:

zip -s 50m new.zip big.iso

Pour les pièces 50MG

new.zip
new.z01
new.z02
...

Créez des morceaux de 3G avec cela (bon pour mettre de gros fichiers sur un disque FAT32)

zip -s 3g new.zip big.iso

Les nouveaux Mac OS extraient ces fichiers en double-cliquant sur le fichier new.zip

guya
la source
2
Double-cliquer sur le fichier zip sur mac os 10.13.6 High Sierra n'a pas décompressé l'archive d'origine pour moi. J'ai dû utiliser l'application 'The unarchiver' sur itunes.apple.com/us/app/the-unarchiver/id425424353
user674669
1
J'avais divisé un fichier zip créé par 7zip sur Windows, ce qui a abouti à un schéma de dénomination de fichier différent. Unarchiver a également pu extraire cela!
max
0

J'ai également dû utiliser Unarchiver pour extraire le fichier ZIP multipart résultant, mais curieusement, il a recréé le chemin d'origine vers le fichier zip. par exemple, j'ai initialement créé l'archive ici:

/ Volumes / HD externe / Dossier de test / my-multipart-archive-parts.zip

Et copié toutes les parties de l'archive ici:

~ / Bureau / Dossier de test /

Lorsque j'ai utilisé Unarchiver pour extraire les fichiers, il a créé ceci:

~ / Bureau / Dossier de test / Volumes / Disque dur externe / Dossier de test / my-multipart-archive.zip

Très étrange...

John McKenzie
la source