Jak dodać dysk zdalny za pomocą SSH na komputerze lokalnym i zapisać na dysku lokalnym


85

Jak mogę utworzyć kopię zapasową dysku zdalnego za pomocą SSH na moim komputerze lokalnym i zapisać ją na dysku lokalnym?


Próbowałem następujące:

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

Jednak pojawia się następujący błąd:

brak tty i nie określono programu askpass

Odpowiedzi:


114

Jeśli zamierzasz wykonać kopię zapasową dysku twardego A komputera zdalnego za pośrednictwem SSH do jednego pliku na dysku twardym komputera lokalnego, możesz wykonać jedną z następujących czynności.

Przykłady

uruchomić z komputera zdalnego

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

uruchomić z lokalnego komputera

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

Przykład na żywo

$ 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

Metody monitorowania?

  1. Zaloguj się przez sshinny terminal i ls -lplik, aby zobaczyć, jaki jest jego rozmiar.
  2. Możesz użyć pvdo monitorowania postępu dużej operacji dd, na przykład w zdalnym przykładzie powyżej możesz wykonać:

    $ dd if=/dev/sda | gzip -1 - | pv | ssh user@local dd of=image.gz
    
  3. Wyślij sygnał „SIGUSR1” do dd, aby wydrukować statystyki. Coś jak:

    $ pkill -USR1 dd
    

Bibliografia

Metody monitorowania wymienione powyżej zostały pierwotnie pozostawione w komentarzach @Ryan & @bladt i mnie. Przesunąłem je do odpowiedzi, aby były bardziej oczywiste.


Próbowałem tego dla podobnego problemu (tworzenie kopii zapasowej ONEdysku twardego komputera zdalnego w TWOpamięci komputera zdalnego ), na przykład: <br /> [root @ ONE] # dd if = / dev / sda1 | ssh root @ TWO dd of=/root/Public/ONE/sda1.img<br /> 409600 + 0 rekordów w 409600 + 0 zapisanych danych 209715200 bajtów (210 MB) skopiowanych, 0,894929 s, 234 MB / s Pseudo-terminal nie zostanie przydzielony, ponieważ stdin nie jest terminalem głównym @ hasło TWO : Problem polega na tym, że /root/Public/ONE/sda1.imgplik został utworzony ONE, a nie TWOzgodnie z oczekiwaniami. Jak to naprawić?
Urhixidur,

1
Czy ktoś może nam podać przykład użycia pvz lokalnego komputera? Dziękuję Ci.
TCB13,

lepiej jest użyć lbzip2 lub pigz insted z gzip
Shimon Doodkin

dlaczego na końcu potrzebuję "| dd of = image.gz"? (nie tylko „> image.gz”), ponieważ dd zajmuje 100% jednego procesora
Shimon Doodkin

6
W odniesieniu do monitorowania: nowsze wersje dd mają również status=progressopcję. Dzięki temu nie musisz już uruchamiać się pkill -USR1 ddz innego terminala.
Do Schäfer

12

Otrzymany błąd jest spowodowany zdalnym użyciem sudo (zostaniesz poproszony o hasło, ale nie masz hasła, aby je wprowadzić). Z drugiej strony, jako zwykły użytkownik nie możesz normalnie używać tego, ddco sugeruje inna odpowiedź (nie masz wymaganych uprawnień do urządzenia). Możesz rozwiązać problem, przyznając sobie prawo do wykonywania ddjako sudo bez hasła. Możesz to zrobić, edytując plik sudoers (na pilocie!):

sudo visudo

dodaj następujący wiersz:

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

Teraz możesz wydać:

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

i powinno działać. Możesz wprowadzić bardziej ogólny wpis w sudoers, pozwalając na uruchamianie ddz dowolnym parametrem, ale rozsądniej jest ograniczyć te bezpłatne uprawnienia do niezbędnego minimum.


Możesz też uruchomić „sudo ls” na odpowiednim końcu (i wpisać hasło), tuż przed uruchomieniem polecenia „sudo dd ...”
MikeW

W nowszych wersjach dd dodanie statusu = postęp pozwala nawet monitorować postęp kopiowania.
sensslen

7

Właśnie użyłem zmodyfikowanej wersji na wirtualnym pudełku Linux Mint, aby sklonować fizyczny dysk twardy na starzejącym się serwerze RedHat.

Uruchomiłem następujące jako root na wirtualnym pudełku:

ssh root@192.168.1.5 "dd if=/dev/cciss/c0d0" | dd of=/dev/sdb
  • 192.168.1.5 to fizyczne pudełko Red Hat Enterprise Linux 2.1.
  • / dev / sdb to nowy dysk wirtualny, który po zakończeniu klonowania będzie podstawą wirtualnej wersji starej, umierającej skrzynki fizycznej.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.