Como extrair manualmente um conjunto de backup feito por duplicidade?

5

Eu tenho um conjunto de arquivos no meu servidor gerado por um software de duplicidade:

  • duplicity-full.20110315T085334Z.vol1.difftar.gz
  • duplicidade-completa.20110315T085334Z.vol2.difftar.gz
  • duplicidade-completa.20110315T085334Z.vol3.difftar.gz
  • etc ... (50 arquivos, tamanho total de cerca de 1 Gb)

O backup foi feito sem criptografia.

Meu hoster atual não tem duplicidade em seu servidor e não quer instalá-lo. Como posso descompactar esses arquivos usando o acesso SSH remoto? Talvez haja algum script disponível para fazer isso?

    
por Andrew 21.03.2011 / 08:39

4 respostas

2

Que tal fazer o download do arquivo necessário e, em seguida, fazer assim: duplicidade scp: //[email protected]//usr/backup restored_dir (exemplo do site oficial)

    
por 21.03.2011 / 13:09
6

No caso de alguém mais se deparar com isso (como acabei de fazer), há algumas etapas razoavelmente detalhadas (e principalmente corretas) aqui .

Detalhes principais

O ponto principal é descompactar todos os arquivos duplicity-full.*.difftar.gz no mesmo local, para que você tenha apenas dois diretórios snapshot/ e multivol_snapshot/ .

Se o seu arquivo estiver em snapshot/ , você está pronto. Caso contrário, localize o diretório em multivol_snapshot/ no caminho onde seu arquivo costumava estar: você precisa unir todos os arquivos nesse diretório para recriar o arquivo original. Os arquivos são numerados e podem ser unidos usando o comando cat . Dependendo do tamanho do original, pode haver muitas partes.

Problema com as instruções originais

As rotas vinculadas acima sugerem o uso de cat * > rescued-file . Infelizmente esta abordagem simples falha se você tiver mais de 9 partes. Como * se expande em ordem de dicionário, não em ordem numérica, 10 seria listado antes de 2 e o arquivo seria reconstruído na ordem errada.

Solução alternativa

Uma abordagem simples é lembrar que a ordem do dicionário funciona quando os números são do mesmo tamanho e que ? corresponde a um único caractere. Portanto, se seu maior arquivo tiver três dígitos, você poderá inserir manualmente:

cat ? ?? ??? > rescued-file

Adicione ou remova ? padrões conforme necessário, dependendo do maior número de arquivo.

Script

Se você tem muitos arquivos para recuperar e não gosta de escrever isso para todos eles, você pode preferir usar um script como este. Ele lista o diretório que contém cada arquivo, remove duplicatas da lista e, em seguida, vai para cada diretório e cria um arquivo content dos fragmentos lá. ( spacer é apenas para fazer $1 funcionar.)

find multivol_snapshot/ -type f -printf '%h
cat ? ?? ??? > rescued-file
' | \ sort -uz | \ xargs -0 -n 1 sh -c 'cd "$1" ; cat $(ls | sort -n) > content' spacer

Agora você só precisa adicionar /content ao final de qualquer nome de arquivo que estava procurando e deverá encontrá-lo.

Limitações

Isso não restaura nenhuma das permissões ou propriedade de arquivos originais. Ele também não lida com backups incrementais, mas as instruções vinculadas também atingem um beco sem saída neste ponto - eles apenas sugerem usar rdiff 'para juntar os arquivos' e encaminhar o leitor para man rdiff .

    
por 13.08.2012 / 20:56
0

Você pode tentar descompactar esses arquivos e copiar os arquivos necessários. Eu não sei como ele backup de arquivos, mas eu acho que copiar arquivos para o diretório e gzip (ou tar.gz)

    
por 21.03.2011 / 11:48
0

No seu caso, eu acho, é melhor usar software de backup (ou script) que pode ser simplesmente extraído. Você pode ver por backuppc, flaxbackup (eu não sei se vai funcionar em seu host ou não, se é vps (ou vds), mas se é apenas hospedagem compartilhada não vai).

    
por 21.03.2011 / 13:31