De acordo com esta página , é possível deixar o tar criar um arquivo tar "dividido" em arquivos de 100 Mb:
tar -c -M --tape-length = 102400 --file = disk1.tar largefile.tgz
O problema é que esse comando exigirá que você forneça interativamente um novo nome para o próximo arquivo, após o preenchimento do primeiro arquivo.
Alguém sabe uma maneira de pular essa etapa interativa e deixar o tar fazer a "divisão" automaticamente?
Respostas:
Dê uma olhada na
--new-volume-script
opção, que permite substituir o mecanismo de solicitação por um mecanismo diferente ou por um nome de arquivo gerado. ((tar.info)Multi-Volume Archives
natar
página de informações.) O problemasplit
é que você precisacat
juntar as peças novamente para fazer qualquer coisa, enquanto um arquivo de múltiplos volumes deve ser um pouco mais flexível.fonte
Você pode usar a divisão para isso:
Isso diz ao tar para enviar os dados para o stdout e dividir para selecioná-los no stdin - além de usar um sufixo numérico (
-d
), um tamanho de bloco (-b
) de 100M e usar 'tardisk' como base para os nomes de arquivos resultantes (tardisk00, tardisk01, tardisk02, etc.).Para extrair os dados posteriormente, você pode usar isto:
fonte
-d
é para sufixo numérico, não para prefixo.Claro que a melhor opção para usar é a
--new-volume-script
opção.Mas, se você souber o tamanho do arquivo (neste caso, largefile.tgz), poderá fazer isso também:
Resumo:
(Para -L, especifique quantos forem necessários para que a soma total dos arquivos tar seja maior que largefile.tgz)
Se você está tentando
tar
uma estrutura de árvore de diretóriosfonte
Eu consegui trabalhar com os seguintes comandos:
O único problema é que
part_1.tar
, na verdade, será o último arquivo e os outros serão deslocados por um. Ou seja,part_2.tar
é realmente a primeira parte, epart_k.tar
é a parte(n - 1)
th . Corrigir isso com algum script de shell é trivial e deixado como um exercício para o leitor.fonte
ele criará automaticamente arquivos com tamanho de 1,1 GB; se o seu tar for maior, você poderá aumentar o número, por exemplo, 1000 {2..1000} ou aumentar a entrada para o argumento de comprimento de fita.
fonte