Como inserir um disco remoto usando o SSH na máquina local e salvar em um disco local

69

Como posso criar um backup de um disco remoto usando o SSH na minha máquina local e salvá-lo em um disco local?

Eu tentei o seguinte:

ssh [email protected] "sudo dd if=/dev/sdX " | \
  dd of=/home/username/Documents/filename.image'

No entanto, recebo o seguinte erro:

no tty present and no askpass program specified

    
por Qu0rk 31.05.2014 / 06:30

3 respostas

98

Se a sua intenção for fazer um backup do HDD A do computador remoto via SSH em um único arquivo no disco rígido do seu computador local, você pode seguir um destes procedimentos.

Exemplos

executado a partir do computador remoto

$ dd if=/dev/sda | gzip -1 - | ssh user@local dd of=image.gz

executado a partir do computador local

$ ssh user@remote "dd if=/dev/sda | gzip -1 -" | dd of=image.gz

Exemplo ao vivo

$ ssh skinner "dd if=/dev/sda5 | gzip -1 -" | dd of=image.gz
208782+0 records in
208782+0 records out
106896384 bytes (107 MB) copied, 22.7608 seconds, 4.7 MB/s
116749+1 records in
116749+1 records out
59775805 bytes (60 MB) copied, 23.9154 s, 2.5 MB/s

$ ll | grep image.gz
-rw-rw-r--.   1 saml saml  59775805 May 31 01:03 image.gz

Métodos para monitoramento?

  1. Faça login via ssh em outro terminal e ls -l no arquivo para ver o tamanho dele.
  2. Você pode usar pv para monitorar o progresso de uma grande operação dd, por exemplo, para o exemplo remoto acima, você pode fazer:

    $ dd if=/dev/sda | gzip -1 - | pv | ssh user@local dd of=image.gz
    
  3. Envie um sinal "SIGUSR1" para dd e ele imprimirá as estatísticas. Algo como:

    $ pkill -USR1 dd
    

Referências

Os métodos mencionados acima para monitoramento foram originalmente deixados por comentários de @Ryan & @bladt e eu. Eu os movi para a resposta para torná-los mais óbvios.

    
por 31.05.2014 / 07:05
6

O erro que você recebe é devido ao uso de sudo remotamente (você seria solicitado pela senha, mas você não tem um tty para inseri-la). Por outro lado, como usuário normal, você normalmente não pode usar simplesmente dd como sugerido em outra resposta (você não tem as permissões necessárias para o dispositivo). Você pode resolver o problema dando a você mesmo direitos para executar dd 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 editar:

ssh userfoo@host "sudo /bin/dd if=/dev/sdX" | dd of=test.dd

e isso deve funcionar. Você poderia fazer uma entrada mais genérica em sudoers, permitindo executar dd com qualquer parâmetro, mas é mais prudente manter essas permissões livres no mínimo que você precisa.

    
por 04.01.2015 / 16:30
5

Acabei de usar uma versão modificada em uma caixa virtual do Linux Mint para clonar um disco rígido físico em um antigo servidor RedHat.

Eu executei o seguinte como root na caixa virtual:

ssh [email protected] "dd if=/dev/cciss/c0d0" | dd of=/dev/sdb
  • 192.168.1.5 é a caixa física do Red Hat Enterprise Linux 2.1.
  • / dev / sdb é um novo disco virtual, que, quando concluído, será a base de uma versão virtual da antiga caixa física que está morrendo.
por 20.05.2015 / 06:47