Criptografar backups com GPG para várias fitas

2

Atualmente, uso tar para gravar meus backups (arquivos ntbackup) em uma unidade de fita alimentada por um autoloader.

Ex: %código% (/ root / advancetape só tem a lógica para avançar para a próxima fita se houver uma disponível ou notificar para trocar as fitas)

Recentemente, recebi o requisito para criptografar nossos backups em fita. Eu posso facilmente criptografar os dados sem problemas usando o GPG. O problema que estou tendo é como eu escrevo isso para várias fitas com a mesma lógica que o tar usa para avançar as fitas uma vez que o atual é preenchido? Não consigo gravar primeiro o arquivo criptografado no disco (2 + TB). Tanto quanto eu posso dizer, tar não aceitará entrada binária de stdin (está procurando por nomes de arquivos). Alguma ideia? : (

    
por Dan 26.10.2009 / 20:08

3 respostas

2

Estou usando este script:

#!/bin/sh

TAPE="/dev/nst0"
mt-st -f $TAPE setblk 0
mt-st -f $TAPE status
totalsize=$(du -csb . | tail -1 | cut -f1)
tar cf - . | \
        gpg --encrypt --recipient [email protected] --compress-algo none | \
        pipemeter -s $totalsize -a -b 256K -l | \
        mbuffer -m 3G -P 95% -s 256k -f -o $TAPE \
                -A "echo next tape; mt-st -f $TAPE eject ; read a < /dev/tty"

Para adaptá-lo às suas necessidades, aqui estão os principais pontos:

  • tar lê o diretório atual e as saídas para stdout . Desta forma, o tar não lida com a mudança de fitas ou criptografia.
  • gpg tem compressão desativada, pois isso diminui consideravelmente o processo (100MB / seg + até 5MB / seg)
  • pipemeter é usado para monitorar o processo e fornecer um tempo estimado até que todos os dados tenham sido gravados na fita - isso pode ser removido se não for necessário
  • mbuffer armazena os dados na memória - este exemplo usa um buffer de 3 GB, ajuste conforme necessário - para permitir que a unidade de fita funcione por mais tempo antes de ficar sem dados, reduzindo o "engraxamento" da fita.
  • A opção -A de mbuffer manipula várias fitas ao ejetar uma fita depois que o fim é alcançado e aguardar a tecla Enter ser pressionada após a próxima fita ter sido carregada. É aqui que o seu script /root/advancetape pode ir.

Um problema a ter em conta quando utilizar isto com fitas LTO:

  • O tamanho do bloco de fitas é definido como variável e mbuffer grava em 256k blocos. Isso funciona bem para mim com uma unidade LTO3, mas tar gosta de usar um tamanho de bloco diferente. Isso, combinado com o fato de que mbuffer lida com a abrangência em fitas em vez de tar , significa que você precisará ler os dados da fita novamente por mbuffer e, em seguida, passá-los por gpg e tar . Se você tentar extraí-lo diretamente da fita com tar (mesmo se você ignorou a criptografia), ele provavelmente não funcionará e certamente será interrompido assim que chegar ao fim da primeira fita, sem lhe dar a chance de mudar para a fita. próxima fita.
por 06.06.2017 / 00:36
1

Sugiro que veja esta opção:

 -I, --use-compress-program PROG
       filter through PROG (must accept -d)

Você pode precisar escrever um script que tome a entrada de stdin e criptografe-a para stdout, mas isso deve funcionar. O -d é para descompressão, em cujo caso você precisaria descriptografar a entrada.

    
por 26.10.2009 / 21:22
0

Você poderia implementar isso no seu script -F. Em vez de ter o tar write diretamente em / dev / st0, use uma área temporária. Certifique-se de especificar o tamanho do volume explicitamente usando -L. Tar irá escrever até bytes de dados para o arquivo e, em seguida, chamar seu script -F. Seu script pode então executar gpg no arquivo e enviá-lo para a fita (e, em seguida, excluir a parte do arquivo da sua área de preparação).

Isso requer apenas que você tenha uma fita (x2) de espaço disponível no seu sistema de arquivos.

Consulte o link para obter mais informações sobre as variáveis disponíveis para o seu - Roteiro F.

EDIT: Note também que esta é uma ideia completamente não testada! Eu tenho pensado em fazer algo assim para fornecer compressão para arquivos de vários volumes, mas eu não o implementei.

    
por 18.11.2010 / 18:20