J'ai un script qui zippe les fichiers d'un dossier. Je veux m'assurer que le fichier compressé ne dépasse pas 10 Mo. Si la taille est supérieure à 10 Mo, il doit créer un autre fichier ZIP.
Y a-t-il une commande (ou une autre méthode) qui peut être utilisée pour cela?
Réponses:
Vous pouvez utiliser la fonctionnalité " split archive " de " zip " lui-même en utilisant l' option " --split-size ".
Depuis la page de manuel "zip" ("
man zip
"):Ainsi, pour créer une archive zip divisée , vous pouvez procéder comme suit (le "
-r
" est le commutateur "récursif" pour inclure les sous-répertoires du répertoire):$ zip -r -s 10m archive.zip directory/
Pour décompresser le fichier , la
zip
page de manuel "" explique que vous devez utiliser le commutateur "-s 0`":Donc, vous "dissociez" d'abord le fichier ZIP en utilisant le commutateur "-s 0":
$ zip -s 0 archive.zip --out unsplit.zip
... et ensuite vous décompressez le fichier non divisé:
$ unzip unsplit.zip
la source
Vous donnera un certain nombre de fichiers:
Qui peut ensuite être décompressé avec:
la source
Voici comment je l'ai fait pour un fichier de 5 Go (divisé en 1 Go contre 10 Mo comme OP l'a demandé) ...
Exemple: Pour diviser un fichier de 5 Go en 1 Go de fichiers à copier sur un FAT32 USB (nom de fichier « FIVE_GB_FILE.ISO »)
Étape 1: compresser le fichier (pas de compression, même répertoire que la source)
Étape 2 : diviser le fichier zip de 5 Go en fichiers zip de 1 Go
Voila ... vous devriez avoir les fichiers 1GB suivants (ET l'original ET le zip de l'étape 1)
la source