Diretório Tar em arquivos archive independentes, não maiores que um determinado tamanho

5

Eu tenho um diretório contendo muitos arquivos. Juntos, esses arquivos ocupam vários gigabytes de espaço. Eu gostaria de compactar este diretório.

Mas compactar o diretório em um único arquivo dificultará a movimentação do arquivo, por isso gostaria de ter vários arquivos.

Eu poderia usar:

tar cvzf - dir/ | split --bytes=200MB - sda1.backup.tar.gz.

Para fazer isso, mas tenho medo de precisar de todos os arquivos de backup para ressuscitar qualquer um dos dados. Eu preferiria que cada arquivo fosse sua própria unidade independente contendo uma parte dos dados de origem.

Uma maneira que posso pensar em fazer isso seria criar um script que calcula o tamanho de cada arquivo de entrada e anexar avidamente os arquivos a uma lista até que um tamanho máximo seja atingido. A lista de arquivos é então tar-ed e uma nova lista é iniciada. Isso é repetido até que todos os arquivos estejam em tars. Os alcatrões podem então ser extraídos independentemente.

Esta não é uma duplicata de outras perguntas, porque estou me perguntando especificamente como executar esta operação de tal forma que cada parte do arquivo total seja um arquivo válido e que cada arquivo possa ser reconstruído sem a necessidade de arquivar arquivos. / p>

Existe algum utilitário que faz isso?

    
por Richard 07.05.2016 / 21:12

1 resposta

3

tar pode lidar com arquivos parciais após a divisão. Quando você tenta restaurar parte de tal arquivo, ele pula tudo o que não pode usar no início e informa sobre qualquer arquivo parcial no final; tudo no meio será restaurado corretamente. Você pode instruir o tar a dividir os arquivos à medida que os cria, usando as opções de comprimento da fita; veja Crie um arquivo TAR dividido em blocos de tamanho máximo para detalhes.

Existem utilitários que funcionam melhor do que isso e produzem partes de arquivos independentes (desde que o limite de tamanho seja suficiente para armazenar o maior arquivo no arquivo); infelizmente os que eu conheço não atendem a todas as suas necessidades. Na maioria das plataformas, há zipsplit que pode dividir arquivos zip, mas só lida com arquivos de até 2 GB de tamanho. No Plano 9, há tarsplit que divide tarballs, mas não tenho certeza se pode ser facilmente transferido para qualquer sistema que você esteja usando (eu suspeito que você não esteja usando o Plan 9 ...).

    
por 07.05.2016 / 22:42