Eu uso dd para fazer backup do meu Ubuntu, mas a imagem de backup é muito grande

1

Eu uso o comando %código% para fazer backup do meu disco. Mas o system_bakcup.img.gz é de até 5GB, e quando eu comprimir este arquivo, o system_backup.img é de apenas 3,5GB, por favor me ajude!

    
por Emiya Kiritsugu 21.05.2013 / 03:58

3 respostas

3

Uma armadilha para essa técnica de backup é que, apesar de quantos dados são realmente armazenados na partição, é provável que você também copie muitos dados indesejados. Por quê? Bem, à medida que você adiciona mais arquivos à sua unidade e os exclui, os dados do arquivo antigo não desaparecem (a menos que você escreva explicitamente sobre essa memória). Ainda está tudo lá. Quando você faz uma cópia do dispositivo de bloco (ou seja, usa o dd para copiar os dados), não faz ideia de que os restos do seu DVD do Titanic apagado não são mais algo que você gostaria de ter. Apenas copia os bytes sem pensar. E mesmo que você não se importe com esse DVD, o gzip não saberá isso, então ele comprimirá o DVD bastante descompressivo apesar do fato de ser essencialmente lixo.

Como você conserta isso?

Erm, bem, você poderia fazer um backup em nível de arquivo, ao som de

tar -zcvf /media/test/system_backup.tar.gz /wherever/sda/is/mounted

Mas se você for fazer um backup em nível de arquivo, deve procurar em esquemas de backup incremental.

Se você quiser ficar com uma opção de backup em nível de bloco, talvez você possa escrever zeros no espaço vazio determinando o espaço deixado na unidade e depois usando (por exemplo, para um GB de espaço livre):

dd if=/dev/zero of=/path/on/drive/zeros.bin bs=1M count=1024

Então, se você executou o mesmo comando de backup, ele deve ser menor (os zeros repetidos são fáceis de compactar).

Mas, mesmo assim, você ainda está copiando o lixo desnecessário (ou seja, todos esses zeros). Se você puder garantir que todos os dados desejados estão no início da partição (isso é dependente do sistema de arquivos e pode exigir uma desfragmentação) você pode limitar o tamanho do backup à quantidade de espaço usado, por exemplo, espaço usado)

dd if=/dev/sda bs=1M count=2048 | gzip > /media/test/system_backup.img.gz

Você pode usar o dh para obter a quantidade de espaço usada:

 df -m /dev/sda | tail -n 1 | tr -s ' ' | cut -d ' ' -f 2

Você poderia incluí-lo no comando dd como

dd if=/dev/sda bs=1M count='df -m /dev/sda | tail -n 1 | tr -s ' ' | cut -d ' ' -f 3' | gzip > /media/test/system_backup.img.gz

Apenas algumas ideias, você teria que experimentar para ver se realmente funcionava. : -)

Editar: Algumas notas adicionais (nada que você não encontraria procurando as bandeiras que usei nas man pages):

No comando dd, bs especifica o tamanho do bloco da cópia. Ao copiar um disco rígido, é mais eficiente copiar blocos do mesmo tamanho que o cache da sua unidade. Você não precisa se preocupar muito com isso. Na verdade, você não precisa especificar o tamanho do bloco, mas, se não souber o padrão, será difícil determinar quantos blocos precisará copiar para copiar a quantidade certa de dados. Eu escolhi blocos de 1MB por conveniência e o sinalizador count especifica quantos blocos copiar (então 10 blocos copia 10 MB de dados).

O comando df dará a utilização de um dispositivo de armazenamento. A opção -m mostra em MB (em oposição ao padrão de KB). Digite apenas esse comando e a necessidade dos comandos tail, tr e cut deve ser bastante evidente (tail obtém a última linha, tr remove os espaços supérfluos inseridos para formatação, corta divide a saída por espaços e retorna o terceiro elemento como 0, 1, 2) que é o espaço utilizado.

    
por Anthony 21.05.2013 / 04:39
1

Você deve usar um Live CD / DVD / USB para fazer isso para garantir uma imagem consistente

Sua unidade pode estar cheia de padrões de dados excluídos, resultando em uma imagem maior do que o necessário. Se este for o caso, você pode corrigir isso com o dd também.

1) dd if=/dev/zero of=/delete.me

Isso criará um arquivo cheio de zeros (altamente compressível) e será executado até que o disco esteja cheio, ponto no qual ele falhará devido à falta de espaço. Tudo bem.

2) Quando terminar de criar o arquivo zero (delete.me) exclua-o com

rm /delete.me

3) Tente seu backup novamente. já que o espaço usado anteriormente será zerado, o resultado final deve ser uma imagem menor.

    
por Elder Geek 12.06.2014 / 19:06
0

Você não deve fazer isso para fazer backup, a menos que saiba que nada está mexendo em seu disco na hora de fazer backup, caso contrário, a imagem resultante não seria apenas grande, mas inconsistente, tornando-a quase inútil para fins de recuperação sob alguns circunstâncias.

Para superá-lo, você pode usar instantâneos do LVM-2, mas é muito mais inteligente não fazer o backup de todo o disco de novo e de novo.

    
por poige 21.05.2013 / 05:51