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:
-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