Si votre intention est de sauvegarder le disque dur A d' un ordinateur distant via SSH vers un fichier unique se trouvant sur le disque dur de votre ordinateur local, vous pouvez procéder de l'une des manières suivantes.
$ 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éthodes de surveillance?
Connectez-vous via sshun autre terminal et ls -lle fichier pour voir sa taille.
Vous pouvez utiliser pvpour surveiller la progression d'une opération de grande taille, par exemple, pour l'exemple distant ci-dessus, vous pouvez effectuer les opérations suivantes:
Envoyez un signal "SIGUSR1" à ddet il imprimera les statistiques. Quelque chose comme:
$ pkill -USR1 dd
Références
Les méthodes de surveillance mentionnées ci-dessus ont été initialement laissées via les commentaires de @Ryan & @bladt et de moi-même. Je les ai déplacés dans la réponse pour les rendre plus évidents.
J'ai essayé ceci pour un problème similaire (sauvegarde du ONEdisque dur de l'ordinateur distant sur TWOle stockage de l' ordinateur distant ), comme ceci: <br /> [racine @ ONE] # dd if = / dev / sda1 | ssh root @ TWO dd of=/root/Public/ONE/sda1.img<br /> 409600 + 0 enregistrements sur 409600 + 0 enregistrements sur 209715200 octets (210 Mo) copiés, 0.894929 s, 234 Mo / s Le pseudo-terminal ne sera pas attribué car stdin n'est pas une racine de terminal @ le mot de passe de TWO : Le problème est que le /root/Public/ONE/sda1.imgfichier a été créé ONE, pas TWOcomme prévu. Comment puis-je réparer ça?
Urhixidur
1
Quelqu'un peut-il nous donner un exemple d'utilisation à pvpartir de la machine locale? Je vous remercie.
TCB13
il est préférable d'utiliser lbzip2 ou pigz insted de gzip
Shimon Doodkin
pourquoi ai-je besoin de "| dd of = image.gz" à la fin? (pas seulement "> image.gz") car dd prend 100% d'un processeur
Shimon Doodkin
6
En ce qui concerne la surveillance: Les nouvelles versions dd ont également l’ status=progressoption. Ainsi, vous n’avez plus besoin de courir pkill -USR1 dddepuis un autre terminal.
Till Schäfer
12
L'erreur que vous recevez est due à l'utilisation de sudo à distance (le mot de passe vous sera demandé mais vous ne disposez pas d'un tty pour le saisir). D'autre part, en tant qu'utilisateur normal, vous ne pouvez pas utiliser normalement simplement ddcomme suggéré dans une autre réponse (vous ne disposez pas des autorisations requises sur le périphérique). Vous pouvez résoudre le problème en vous donnant le droit d’exécuter en ddtant que sudo sans mot de passe. Vous pouvez le faire en éditant le fichier sudoers (sur la télécommande!):
et ça devrait marcher. Vous pouvez créer une entrée plus générique dans sudoers, ce qui vous permet d’exécuter ddn’importe quel paramètre, mais il est plus sage de conserver au minimum ces autorisations gratuites.
192.168.1.5 est la boîte physique Red Hat Enterprise Linux 2.1.
/ dev / sdb est un nouveau disque virtuel qui, une fois le clonage terminé, constituera la base d'une version virtuelle de l'ancienne boîte physique en train de mourir.
ONE
disque dur de l'ordinateur distant surTWO
le stockage de l' ordinateur distant ), comme ceci: <br /> [racine @ ONE] # dd if = / dev / sda1 | ssh root @ TWOdd of=/root/Public/ONE/sda1.img
<br /> 409600 + 0 enregistrements sur 409600 + 0 enregistrements sur 209715200 octets (210 Mo) copiés, 0.894929 s, 234 Mo / s Le pseudo-terminal ne sera pas attribué car stdin n'est pas une racine de terminal @ le mot de passe de TWO : Le problème est que le/root/Public/ONE/sda1.img
fichier a été crééONE
, pasTWO
comme prévu. Comment puis-je réparer ça?pv
partir de la machine locale? Je vous remercie.status=progress
option. Ainsi, vous n’avez plus besoin de courirpkill -USR1 dd
depuis un autre terminal.L'erreur que vous recevez est due à l'utilisation de sudo à distance (le mot de passe vous sera demandé mais vous ne disposez pas d'un tty pour le saisir). D'autre part, en tant qu'utilisateur normal, vous ne pouvez pas utiliser normalement simplement
dd
comme suggéré dans une autre réponse (vous ne disposez pas des autorisations requises sur le périphérique). Vous pouvez résoudre le problème en vous donnant le droit d’exécuter endd
tant que sudo sans mot de passe. Vous pouvez le faire en éditant le fichier sudoers (sur la télécommande!):sudo visudo
ajoutez la ligne suivante:
userfoo ALL=(ALL) NOPASSWD: /bin/dd if=/dev/sdX
Maintenant vous pouvez émettre:
ssh userfoo@host "sudo /bin/dd if=/dev/sdX" | dd of=test.dd
et ça devrait marcher. Vous pouvez créer une entrée plus générique dans sudoers, ce qui vous permet d’exécuter
dd
n’importe quel paramètre, mais il est plus sage de conserver au minimum ces autorisations gratuites.la source
Je viens d'utiliser une version modifiée sur une machine virtuelle Linux Mint pour cloner un disque dur physique sur un serveur RedHat vieillissant.
J'ai exécuté ce qui suit en tant que root sur la boîte virtuelle:
la source