compactando backup dd on the fly

23

Talvez isso pareça uma pergunta idiota, mas a maneira como estou tentando fazer isso não funciona.

Estou no livecd, o drive está desmontado etc.

Quando eu faço o backup dessa maneira

sudo dd if=/dev/sda2 of=/media/disk/sda2-backup-10august09.ext3 bs=64k

... normalmente funcionaria, mas não tenho espaço suficiente no hd externo para o qual estou copiando (ele QUASE se encaixa nele). Então eu queria comprimir dessa maneira

 sudo dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz

... mas tenho permissões negadas. Eu não entendo

Phil
fonte
2
Não. Este não é um backup. Verifique os comandos 'dump' e 'restore'.
Juliano
Ou tar ou cpio ....
chris
1
Juliano, o que você quer dizer com 'isso não é um backup'?
Phil
5
Isso não é um backup, porque os backups são sérios, bem estruturados e usam as ferramentas apropriadas destinadas a criar backups. Você está apenas fazendo uma cópia dos dados brutos de uma partição. Para restaurar esses dados, você precisará de outra partição com a mesma geometria, o que não é garantido. Além disso, se você danificar um único bloco do seu arquivo morto (superbloco, tabelas de inode, diretório raiz etc.), corre o risco de perder todos os seus dados. Com um backup adequado, isso não aconteceria.
Juliano
7
"Para restaurar esses dados, você precisará de outra partição com a mesma geometria, o que não é garantido". Por que ele precisaria disso, ele não pode montar a imagem da partição em um dispositivo de loopback?
22610 Kyle Brandt

Respostas:

41

Você tem acesso ao arquivo sda2-backup ... gz? O Sudo só funciona com o comando após ele e não se aplica ao redirecionamento. Se você deseja que ele se aplique ao redirecionamento, execute o shell como root para que todos os processos filhos sejam root:

sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz"

Como alternativa, você pode montar o disco com as opções de montagem uid / gid (assumindo ext3) para ter permissões de gravação como qualquer usuário que seja. Ou use root para criar uma pasta em / media / disk para a qual você tem permissão.

Outras informações que podem ajudá-lo:

  • O tamanho do bloco realmente importa apenas para a maior parte da velocidade. O padrão é 512 bytes que você deseja manter para o MBR e os disquetes. Tamanhos maiores até certo ponto devem acelerar as operações, pense nisso como análogo a um buffer. Aqui está um link para alguém que fez alguns benchmarks de velocidade com diferentes tamanhos de bloco. Mas você deve fazer seus próprios testes, pois o desempenho é influenciado por muitos fatores. Veja também a outra resposta de andreas
  • Se você deseja fazer isso através da rede com ssh e netcat, para que o espaço não seja o maior problema, consulte esta pergunta sobre falha no servidor .
  • Você realmente precisa de uma imagem da partição, pode haver melhores estratégias de backup?
  • dd é um comando muito perigoso, use em ofvez de ife você acaba substituindo o que está tentando fazer backup !! Observe como as chaves oe iestão próximas umas das outras? Portanto, tenha muito, muito, muito cuidado.
Kyle Brandt
fonte
eu vou tentar isso como eu também faço isso bs = 64k? (e eu tenho que?)
Phil
O bs = 64k apenas torna a transferência mais rápida porque o dd estará lendo blocos de 64k cada, em vez do tamanho padrão do bloco (não me lembro).
chris
O que Chris disse, e se você quiser incluí-lo, coloque-o após dd e antes do símbolo de barra vertical (|), pois é um argumento para dd.
22610 Kyle Brandt
1
Ocasionalmente, também utilizarei "sudo tee $ file> / dev / null" em um pipeline para permitir a gravação em um arquivo que minha conta de usuário também não tem acesso.
Rik Schneider
6

No primeiro caso, o dd está sendo executado como root.

No segundo caso, o dd está sendo executado como root, mas o gzip está sendo executado como você.

Altere as permissões em / media / disk, ofereça um shell raiz ou execute o gzip como root também.

chris
fonte
3

Além disso, você pode substituir o gzip bzip2 --bestpor uma compressão muito melhor:

sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2
dmityugov
fonte
3
A um custo de muito tempo. Veja changelog.complete.org/archives/… "Como pensar em compressão" para mais detalhes.
213 Bill Bill Weiss
@ BillWeiss: Obrigado pelo seu comentário, leitura muito interessante!
andreas
compressão: lzma> bzip2> gzip .. velocidade: gzip> bzip2> lzma. A menos que você esteja publicando a imagem do disco na Internet, não há muito benefício para o tempo, energia da CPU e memória que você gasta para uma melhor compactação.