Preciso compactar um arquivo grande de cerca de 17 a 20 GB. Eu preciso dividi-lo em vários arquivos de cerca de 1 GB por arquivo.
Procurei uma solução via Google e encontrei maneiras de usar split
e cat
comandos. Mas eles não funcionaram para arquivos grandes. Além disso, eles não funcionarão no Windows; Eu preciso extraí-lo em uma máquina Windows.
linux
bash
file-io
compression
Aka
fonte
fonte
Respostas:
Você pode usar o
split
comando com a-b
opção:Ele pode ser remontado em uma máquina Windows usando a resposta de @ Joshua .
Edit : Como @Charlie afirmou no comentário abaixo, convém definir um prefixo explicitamente, pois ele será usado de
x
outra forma, o que pode ser confuso.Edit : Editando a postagem porque a pergunta está fechada e a solução mais eficaz está muito próxima do conteúdo desta resposta:
Esta solução evita a necessidade de usar um arquivo grande intermediário ao (des) compactar. Use a opção tar -C para usar um diretório diferente para os arquivos resultantes. btw se o archive consistir em apenas um arquivo, o tar pode ser evitado e apenas o gzip usado:
Para o Windows, você pode baixar versões portadas dos mesmos comandos ou usar o cygwin.
fonte
-b 1024MiB
deu um erro de que era um número inválido de bytes. Usando--bytes=1024m
obras.cat
para remontar o arquivo. Você pode usarcopy /b file1 + file2 + etc..
no Windows e depois copiar de volta para o Linux, e o tar pode ler o tarball remontado. Eu apenas tentei.--numeric-suffixes
: use sufixos numéricos em vez de alfabéticos.Se você estiver se separando do Linux, ainda poderá remontar no Windows.
fonte
copy /b file* filetogether
- support.microsoft.com/kb/71161use tar para dividir em vários arquivos
Existem muitos programas que funcionarão com arquivos tar no Windows, incluindo o cygwin.
fonte
Código testado, cria inicialmente um único arquivo morto e depois o divide:
Essa variante omite a criação de um único arquivo e vai direto para a criação de partes:
Nesta variante, se o tamanho do arquivo do arquivo for divisível por
$CHUNKSIZE
, o último arquivo parcial terá o tamanho de 0 bytes.fonte
split
que já faz.