GNU/Linux >> Tutoriels Linux >  >> Linux

Comment compresser des fichiers avec une limite de taille ?

Solution 1 :

Vous pouvez utiliser l'"archive fractionnée " fonctionnalité de "zip " lui-même en utilisant le "--split-size ".

À partir de la page de manuel "zip" ("man zip "):

(...)

L'une des utilisations des archives fractionnées consiste à stocker une grande archive sur plusieurs suppressions.
médias capables. Pour une archive fractionnée avec 20 fichiers fractionnés, les fichiers sont
nommément (remplacez ARCHIVE par le nom de votre archive) AR‐
CHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip. Notez que le
le dernier fichier est le fichier .zip.

(...)

-s taille fractionnée
--split-size splitsize

La taille de fractionnement est un nombre éventuellement suivi d'un multiplicateur.
Actuellement, le nombre doit être un entier. Le multiplicateur peut
être actuellement l'un des k (kilooctets), m (mégaoctets), g (gigaoctets),
ou t (téraoctets). Comme 64k est la taille de partage minimale, les nombres
sans multiplicateurs par défaut en mégaoctets. Par exemple, pour créer
mangé une archive divisée appelée foo avec le contenu de la barre
répertoire avec des fractionnements de 670 Mo qui pourraient être utiles pour la gravure
sur les CD, la commande :

                zip -s 670m -r foo bar

pourrait être utilisé.

Donc, pour créer une archive zip fractionnée , vous pouvez faire ce qui 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 , le "zip " La page de manuel explique que vous devez utiliser le commutateur "-s 0`" :

(...)

 zip -s 0 split.zip --out unsplit.zip

convertira une archive fractionnée en une archive à fichier unique.

(...)

Donc, vous devez d'abord "défractionner" le fichier ZIP en utilisant le commutateur "-s 0":

$ zip -s 0 archive.zip --out unsplit.zip

... puis vous décompressez le fichier non divisé :

$ unzip unsplit.zip

Solution 2 :

tar -czvf - /path/to/files | split -b 10M - archive.tar.gz

Vous donnera un certain nombre de fichiers :

archive.tar.gzaa

archive.tar.gzab

...

Qui peut ensuite être décompressé avec :

cat archive.tar.* | tar -xzvf -

Solution 3 :

Voici comment je l'ai fait pour un fichier de 5 Go (divisé en 1 Go contre 10 Mo comme demandé par OP)...

Exemple : Pour diviser un fichier de 5 Go en fichiers de 1 Go pour copier sur une clé USB FAT32 (nom de fichier "FIVE_GB_FILE.ISO")

Étape 1 : compressez le fichier (pas de compression, même répertoire que la source)

zip -0 FIVE_GB_FILE.ZIP FIVE_GB_FILE.ISO

Étape 2  :divisez le fichier zip de 5 Go en fichiers zip de 1 Go

zip -s 1000m SPLIT_5GB_FILES FIVE_GB_FILE.ZIP

Voilà... vous devriez avoir les fichiers suivants de 1 Go (ET l'original, ET le zip de l'étape 1)

SPLIT_5GB_FILES.zip
SPLIT_5GB_FILES.Z01
SPLIT_5GB_FILES.Z02
SPLIT_5GB_FILES.Z03
SPLIT_5GB_FILES.Z04

Linux
  1. Comment compresser des fichiers et des répertoires sous Linux (avec exemples)

  2. Comment décompresser des fichiers sous Linux (avec exemples)

  3. Comment archiver des fichiers et des répertoires sous Linux [Partie 2]

  4. Comment archiver et compresser des fichiers sous Linux

  5. Comment compresser plusieurs fichiers sous Linux

Comment chiffrer des fichiers avec gocryptfs sous Linux

Comment décompresser des fichiers sous Linux

Comment compresser des fichiers et des répertoires sous Linux

Comment décompresser des fichiers zip sous Linux

Comment télécharger des fichiers avec FileZilla

Comment compresser un fichier sous Linux