Yerel makinede SSH kullanarak uzak bir disk nasıl yapılır ve yerel bir diske nasıl kaydedilir


85

Yerel makinemdeki SSH'yi kullanarak uzak bir diskin yedeğini nasıl oluşturabilir ve yerel bir diske kaydedebilirim?


Aşağıdakileri denedim:

ssh hostname@my.ip.address "sudo dd if=/dev/sdX " | \
  dd of=/home/username/Documents/filename.image`

Ancak, aşağıdaki hatayı alıyorum:

tty mevcut değil ve hiçbir askpass program belirtilmemiş

Yanıtlar:


114

Amacınız uzaktaki bir bilgisayarın HDD A'sını SSH ile yerel bilgisayarınızın sabit diskinde bulunan tek bir dosyaya yedeklemekse , aşağıdakilerden birini yapabilirsiniz.

Örnekler

uzaktaki bilgisayardan çalıştır

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

yerel bilgisayardan çalıştır

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

Canlı örnek

$ 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

İzleme yöntemleri?

  1. Yoluyla giriş sshbaşka terminal ve içinde ls -lo boyutu olduğunu ne olduğunu görmek için dosyanın.
  2. pvBüyük bir dd işleminin ilerlemesini izlemek için kullanabilirsiniz , örneğin yukarıdaki uzak örnek için şunları yapabilirsiniz:

    $ dd if=/dev/sda | gzip -1 - | pv | ssh user@local dd of=image.gz
    
  3. Bir "SIGUSR1" sinyali gönderin dd, istatistikleri yazdıracaktır. Gibi bir şey:

    $ pkill -USR1 dd
    

Referanslar

İzleme için yukarıda belirtilen yöntemler başlangıçta @Ryan & @bladt ve kendim tarafından yorumlarla bırakılmıştır . Onları daha net hale getirmek için onları cevaba taşıdım.


Bunu benzer bir sorun için denedim (uzaktaki bilgisayarın ONEsabit diskini uzaktaki bilgisayarın TWOdeposuna yedekleyin ), şöyle: <br /> [root @ ONE] # dd if = / dev / sda1 | ssh root @ TWO dd of=/root/Public/ONE/sda1.img<br /> 409600 + 0, 409600 + 0'da kayıt yapar, 209715200 bayt (210 MB) kopyalanır, 0.894929 s, 234 MB / s kaydeder. : Sorun, beklendiği gibi değil , /root/Public/ONE/sda1.imgdosyanın oluşturulmuş olmasıdır . Bunu nasıl düzeltebilirim? ONETWO
Urhixidur

1
Birisi bize pvyerel makineden bir örnek verebilir mi? Teşekkür ederim.
TCB13,

o gzip insted lbzip2 veya pigz kullanmak daha iyidir
Şimon Doodkin

neden sonunda "| dd of = image.gz" a ihtiyacım var? (sadece "> image.gz" değil) çünkü dd bir cpudan% 100 alır
Shimon Doodkin

6
İzleme ile ilgili: Yeni dd sürümleri de status=progressseçeneğe sahiptir. Böylece, pkill -USR1 ddartık başka bir terminalden koşmanıza gerek yok.
Schäfer

12

Aldığınız hata, uzaktan sudo kullanımından kaynaklanıyor (parola istenir ancak girmeniz gereken bir parola yoktur). Öte yandan, normal bir kullanıcı olarak normalde dddiğer cevaplarda önerildiği şekilde kullanamazsınız (cihaza gerekli izinleriniz yoktur). Sorunu kendinize ddparola olmadan sudo olarak çalıştırma hakları vererek çözebilirsiniz . Bunu sudoers dosyasını düzenleyerek yapabilirsiniz (uzaktan kumandadaki!):

sudo visudo

aşağıdaki satırı ekleyin:

userfoo ALL=(ALL) NOPASSWD: /bin/dd if=/dev/sdX

Şimdi sorunu çözebilirsiniz:

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

ve çalışması gerekir. ddHerhangi bir parametreyle çalışmanıza izin vererek sudoers'da daha genel bir giriş yapabilirsiniz , ancak bu ücretsiz izinleri ihtiyacınız olan minimumda tutmak akıllıca olacaktır.


Veya, 'sudo ls' komutunu sadece uygun uçta çalıştırabilir (ve şifreyi yazabilirsiniz), 'sudo dd ...' komutunu çalıştırmadan hemen önce
MikeW

Dd'nin yeni sürümleri eklenmesi durumunda status = progress, kopya ilerlemesinin izlenmesine bile izin verir.
21:16

7

Yaşlanan bir RedHat sunucusundaki fiziksel bir sabit diski klonlamak için sanal bir Linux Nane kutusunda değiştirilmiş bir sürüm kullandım.

Aşağıdakileri sanal kutuda root olarak çalıştırdım:

ssh root@192.168.1.5 "dd if=/dev/cciss/c0d0" | dd of=/dev/sdb
  • 192.168.1.5 fiziksel Red Hat Enterprise Linux 2.1 kutusudur.
  • / dev / sdb, klonlama bittiğinde eski ölmekte olan fiziksel kutunun sanal versiyonunun temeli olacak yeni bir sanal disktir.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.