Se sua intenção é fazer backup do HDD A de um computador remoto via SSH para um único arquivo que esteja no HDD do computador local, você pode fazer o seguinte.
Envie um sinal "SIGUSR1" para dde ele imprimirá estatísticas. Algo como:
$ pkill -USR1 dd
Referências
Os métodos mencionados acima para o monitoramento foram originalmente deixados por comentários de @Ryan & @bladt e de mim. Mudei-os para a resposta para torná-los mais óbvios.
Tentei isso por um problema semelhante (fazendo backup do ONEdisco rígido do computador remoto para o TWOarmazenamento do computador remoto ), assim: <br /> [root @ ONE] # dd if = / dev / sda1 | ssh root @ DOIS dd of=/root/Public/ONE/sda1.img<br /> 409600 + 0 registros em 409600 + 0 registros 209715200 bytes (210 MB) copiados, 0,894929 s, 234 MB / s O pseudo-terminal não será alocado porque stdin não é uma raiz do terminal @ senha do TWO : O problema é que o /root/Public/ONE/sda1.imgarquivo foi criado ONE, não TWOcomo esperado. Como faço para corrigir isso?
Urhixidur
1
Alguém pode nos dar um exemplo de uso pvna máquina local? Obrigado.
TCB13
é melhor usar lbzip2 ou pigz insted de gzip
Shimon Doodkin
por que preciso do "| dd of = image.gz" no final? (e não apenas "> image.gz"), porque dd leva 100% de uma cpu
Shimon Doodkin
6
Em relação ao monitoramento: as versões mais recentes do dd também têm a status=progressopção. Portanto, você não precisa mais correr pkill -USR1 ddde outro terminal.
Till Schäfer
12
O erro que você recebe é devido ao uso do sudo remotamente (você deve solicitar a senha, mas não tem um tty para digitá-la). Por outro lado, como usuário normal, normalmente não é possível usá-lo simplesmente ddcomo sugerido em outra resposta (você não tem as permissões necessárias para o dispositivo). Você pode resolver o problema concedendo a si mesmo direitos para executar ddcomo sudo sem uma senha. Você pode fazer isso editando o arquivo sudoers (no controle remoto!):
e deve funcionar. Você pode fazer uma entrada mais genérica nos sudoers, permitindo executar ddcom qualquer parâmetro, mas é mais prudente manter essas permissões gratuitas no mínimo necessário.
ONE
disco rígido do computador remoto para oTWO
armazenamento do computador remoto ), assim: <br /> [root @ ONE] # dd if = / dev / sda1 | ssh root @ DOISdd of=/root/Public/ONE/sda1.img
<br /> 409600 + 0 registros em 409600 + 0 registros 209715200 bytes (210 MB) copiados, 0,894929 s, 234 MB / s O pseudo-terminal não será alocado porque stdin não é uma raiz do terminal @ senha do TWO : O problema é que o/root/Public/ONE/sda1.img
arquivo foi criadoONE
, nãoTWO
como esperado. Como faço para corrigir isso?pv
na máquina local? Obrigado.status=progress
opção. Portanto, você não precisa mais correrpkill -USR1 dd
de outro terminal.O erro que você recebe é devido ao uso do sudo remotamente (você deve solicitar a senha, mas não tem um tty para digitá-la). Por outro lado, como usuário normal, normalmente não é possível usá-lo simplesmente
dd
como sugerido em outra resposta (você não tem as permissões necessárias para o dispositivo). Você pode resolver o problema concedendo a si mesmo direitos para executardd
como sudo sem uma senha. Você pode fazer isso editando o arquivo sudoers (no controle remoto!):sudo visudo
adicione a seguinte linha:
userfoo ALL=(ALL) NOPASSWD: /bin/dd if=/dev/sdX
Agora você pode emitir:
ssh userfoo@host "sudo /bin/dd if=/dev/sdX" | dd of=test.dd
e deve funcionar. Você pode fazer uma entrada mais genérica nos sudoers, permitindo executar
dd
com qualquer parâmetro, mas é mais prudente manter essas permissões gratuitas no mínimo necessário.fonte
Acabei de usar uma versão modificada em uma caixa Linux Mint virtual para clonar um disco rígido físico em um servidor RedHat antigo.
Executei o seguinte como root na caixa virtual:
fonte