web-dev-qa-db-fra.com

Divisez un gros fichier en petits morceaux

Comment diviser un gros fichier + 4 Go en des fichiers plus petits d'environ 500 Mo chacun.

Et comment puis-je réassembler à nouveau pour obtenir le fichier d'origine?

66
Stefan

Vous pouvez utiliser ( split et cat .

Par exemple quelque chose comme

$ split --bytes 500M --numeric-suffixes --suffix-length=3 foo foo.

(où le nom du fichier d'entrée est foo et le dernier argument est le préfixe de sortie). Cela créera des fichiers comme foo.000 foo.001 ...

La même commande avec des options courtes:

$ split -b 100k -d -a 3 foo foo

Vous pouvez également spécifier "--line-bytes" si vous souhaitez qu'il se divise sur les limites de ligne au lieu du nombre exact d'octets.

Pour réassembler les pièces générées, vous pouvez utiliser par exemple:

$ cat foo.* > foo_2

(en supposant que le shell trie les résultats de la globalisation du shell - et que le nombre de pièces ne dépasse pas la limite d'arguments dépendante du système)

Vous pouvez comparer le résultat via:

$ cmp foo foo_2
$ echo $?

(qui devrait sortir 0)

Alternativement, vous pouvez utiliser une combinaison de find/sort/xargs pour réassembler les pièces:

$ find -maxdepth 1 -type f -name 'foo.*'  | sort | xargs cat > foo_3
80
maxschlepzig

Vous pouvez également le faire avec Archive Manager si vous préférez une interface graphique. Regardez sous "Enregistrer-> Autres options-> Diviser en volumes de".

4
user1498