Dividir arquivos em partes

Recentemente tive que copiar um arquivo de quase 6 GB entre dois computadores que utilizo. Esses computadores não estavam perto um do outro, muito menos na mesma rede. Solução simples: utilizar um pendrive.

Meu celular tem espaço na memória interna suficiente para copiar o arquivo, porém para minha surpresa não consegui copiar o arquivo inteiro. Quando vi a mensagem de erro lembrei que o sistema de arquivos do celular é FAT, com o limite do tamanho em quase 4GB. Ou seja, o tamanho do arquivo é maior que o suportado pelo sistema de arquivos.

Como trocar o sistema de arquivos não era a opção, procurei como dividir o arquivo em partes. A solução é extremamente simples, basta utilizar o comando split. Este comando permite dividir o arquivo baseado em alguns critérios como bytes e número de linhas. Meu caso como é um arquivo binário e o que me interessava era o tamanho, fiz a divisão por bytes.

O comando utilizado foi:
split -b 1G arquivo-original prefixo-das-partes

Explicando, -b diz para o split dividir por bytes e que cada parte terá 1GB. arquivo-original é o arquivo que desejo dividir. prefixo-das-partes é o nome dado a cada parte, seguido de sua numeração, caso seja arquivo. serão criados vários arquivos como arquivo.aa, arquivo.ab e assim por diante. Se quiser números em vez de letras basta adicionar o parâmetro -d no comando.

Não foi o meu caso, porém se tiver um arquivo de texto grande, como um log, e quiser dividi-lo, basta utilizar o parâmetro -l 1000 que gerará arquivos de 1000 linhas cada, sem o risco de dividir alguma linha em dois arquivos.

Com cinco arquivos de 1GB e outro de aproximadamente 700MB, finalmente foi copiado para o celular.

Porém ainda precisava juntar as partes no destino, que bastou um:
cat prefixo-das-partes* > arquivo-original

Explicando, o cat recebeu o nome de todas as partes por causa do “*”, que também foram passadas como argumento na ordem correta, mesma coisa que executar um cat arquivo.aa arquivo.ab ... > arquivo. E assim recuperando o arquivo original.

O cat também funciona com arquivos de texto dividido pelo número de linhas. Se quiser dividir vários arquivos basta gerar um “.tar.gz” ou “.tar.bz2” antes.