Dividir arquivos tar e carregá-los um de cada vez

3

Eu quero fazer backup de meus sistemas para dividir os arquivos tar com um script fazendo o upload deles um por um. Tem que criar o arquivo dividido e, em seguida, executar um script. O script carrega a peça e a exclui. Isso é para garantir que os backups não usem muito espaço no sistema. Eu poderia criar os arquivos divididos e enviá-los, mas precisaria de 50% de espaço livre. Então eu preciso criá-los um de cada vez. Estou procurando conselhos sobre a melhor abordagem. Eu tenho um casal em mente, você pode sugerir um melhor.

Abordagem 1: Divida os arquivos com o próprio tar e use --new-volume-script. O problema com isso é que eu tenho que calcular o tamanho do backup. O alcatrão parece exigir direções específicas para quantas partes vão existir e quão grandes elas devem ser. Isso significa que meu script teria que calcular isso e gerar os parâmetros para o tar.

tar -c -M -L 102400 --file=disk1.tar --file=disk2.tar --file=disk3.tar largefile.tgz

Isso cria três arquivos de 100 MB para cada parte. Se houver uma maneira de fazer isso dinamicamente com o tar nomeando automaticamente os arquivos e criando quantos forem necessários, eu gostaria de saber porque isso tornaria essa abordagem viável.

Abordagem dois: escreva meu próprio roteiro que se comporta como rachado. A saída do tar é dada em stdin e carrega os arquivos e faz o tar aguardar. Essa seria a solução mais fácil.

    
por John Tate 23.05.2014 / 07:32

1 resposta

0

Esta solução não usa tar , mas você pode fazê-la funcionar com afio. Toda a lógica para dividir o arquivo é embutida, com a opção de executar scripts após cada divisão de volume:

cd /path/to/files -print | \
   afio -oxv -s 1g -H rotate.sh backup-'date -Imin'-Vol%V.afio

E rotate.sh é o seu script para carregar e excluir cada arquivo. Isso gera arquivos:

backup-2014-11-29T18:04-0500-Vol1.afio
backup-2014-11-29T18:04-0500-Vol2.afio
backup-2014-11-29T18:04-0500-Vol3.afio
...

E executa rotate.sh após a conclusão de cada volume.

Outras opções:

-o              # create an archive
-x              # perserve ownership suid/sgid
-v              # verbose
-s 1g           # split archives after 1g
-H rotate.sh    # run this script after each 'tape change'
-Z -P xz        # Compress, and use xz instead of gzip
 # Also, %V, below, inserts the volume number into the file name
 backup-'date -Imin'-Vol%V.afio               

Outros afio aspectos: É semelhante a cpio, , exceto que é especificamente voltado para backups com script. Também é mais seguro para arquivos compactados porque armazena cada arquivo compactado individualmente, em vez de compactar todo o fluxo. Desta forma, uma corrupção de dados após a compactação afeta apenas um arquivo, em vez de todo o arquivo. Da mesma forma, também pode gpg criptografar cada arquivo à medida que é armazenado, o que é ótimo para armazenamento em nuvem.

    
por 30.11.2014 / 00:12