Dividir arquivos
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:
-aindica o tamanho do prefixo do nome dos arquivos de gerados;-bserve para indicar o tamanho dos arquivos gerados;--verboseimprime um diagnóstico antes que cada arquivo seja aberto;--helpmostra a ajuda;--versionmostra 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