Dividir arquivos

Como dividir arquivos no terminal usando split e cat

#unix

As vezes é necessário que manipulemos arquivos grandes, mas o destino deles pode não comportar (pendrive por exemplo). Ou as vezes você quer transferir um arquivo de um lugar para outro em pequenas partes.

Seja qual for a razão para isso existe o comando split para dividir os arquivos e para recuperá-los um simples cat.

Dividir

Uso:

$ split [ OPCAO ] [ ARQUIVO [ PREFIXO ] ]

As principais opções são:

  • -a indica o tamanho do prefixo do nome dos arquivos de gerados;
  • -b serve para indicar o tamanho dos arquivos gerados;
  • --verbose imprime um diagnóstico antes que cada arquivo seja aberto;
  • --help mostra a ajuda;
  • --version mostra a versão.

Exemplo Prático

Temos o seguinte arquivo:

$ ls -lh
total 1.7G
-rw-r--r-- 1 root root 1.7G Sep 1 21:38 backup.tar.gz

Para dividir em formatos de 680 MBytes:

$ split -b 680m backup.tar.gz

Pronto o arquivo já está dividido:

$ ls -lh
total 3.3G
-rw-r--r-- 1 root root 1.7G Sep 1 21:38 backup.tar.gz
-rw-r--r-- 1 root root 680M Sep 2 10:02 xaa
-rw-r--r-- 1 root root 680M Sep 2 10:03 xab
-rw-r--r-- 1 root root 301M Sep 2 10:04 xac

Quando o split separa um arquivo ele coloca em arquivos com o padrão de nome x seguido de outras letras e números de forma a ficar em ordem, como visto no ls acima, isto ajuda quando for recompor o arquivo.

Quando o arquivo for muito grande pode surgir uma mensagem de erro semelhante a:

$ split file
split: output file suffixes exhausted

Caso o arquivo seja muito grande é necessário usar o parametro -a com um valor dos prefixos:

$ split -a 16 file

Recompor

O conhecido cat é útil para vermos arquivos de texto (e até para unir), mas ele também abre arquivos binários, e para unir arquivos separados pelo comando split.

Mas ATENÇÃO é preciso redirecionar o conteúdo do cat, caso contrário o conteúdo será mostrado na tela.

$ cat x* > arquivo

Exemplo

Seguindo o exemplo anteriormente mencionado, já com o transporte feito:

$ cat x* > backup.tar.gz