Як видалити віддалений диск за допомогою SSH на локальній машині та зберегти на локальному диску


85

Як я можу створити резервну копію віддаленого диска за допомогою SSH на своїй локальній машині та зберегти її на локальному диску?


Я спробував таке:

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

Однак я отримую таку помилку:

не вказано tty присутності та жодної програми пропуску

Відповіді:


114

Якщо ви маєте намір створити резервну копію HDD A віддаленого комп'ютера через SSH в один файл, який знаходиться на жорсткому диску вашого локального комп'ютера, ви можете зробити одне з наступних.

Приклади

запустити від віддаленого комп'ютера

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

запустити з локального комп'ютера

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

Живий приклад

$ 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

Методи моніторингу?

  1. Увійдіть через sshінший термінал і ls -lфайл, щоб побачити його розмір.
  2. Ви можете використовувати pvдля спостереження за ходом великої операції DD, наприклад, для віддаленого прикладу, наведеного вище, ви можете:

    $ dd if=/dev/sda | gzip -1 - | pv | ssh user@local dd of=image.gz
    
  3. Надішліть сигнал "SIGUSR1" ddі він надрукує статистику. Щось на зразок:

    $ pkill -USR1 dd
    

Список літератури

Способи, згадані вище для моніторингу, спочатку були залишені через коментарі @Ryan & @bladt і я. Я перемістив їх у відповідь, щоб зробити їх більш очевидними.


Я спробував це для подібної проблеми (резервне копіювання ONEжорсткого диска віддаленого комп'ютера TWOна сховище віддаленого комп’ютера ), як це: <br /> [root @ ONE] # dd, якщо = / dev / sda1 | ssh root @ TWO dd of=/root/Public/ONE/sda1.img<br /> 409600 + 0 записів у 409600 + 0 записаних записів 209715200 байтів (210 МБ) скопійовано, 0,894929 с, 234 Мб / с Псевдотермінал не буде виділено, оскільки stdin не є кореневим терміналом @ паролем TWO : Проблема полягає в тому, що /root/Public/ONE/sda1.imgфайл створено ONEне, TWOяк очікувалося. Як це виправити?
Urhixidur

1
Чи може хтось надати нам приклад використання pvз локальної машини? Дякую.
TCB13

краще використовувати lbzip2 або pigz з gzip
Шимон Додкін

навіщо мені потрібен "| dd of = image.gz" наприкінці? (не тільки "> image.gz"), тому що дд займає 100% одного процесора
Шимон Додкін

6
Щодо моніторингу: новіші версії dd також мають status=progressможливість. Таким чином, вам більше не потрібно бігати pkill -USR1 ddз іншого терміналу.
Till Schäfer

12

Ви отримаєте помилку через віддалене використання sudo (вам буде запропоновано пароль, але у вас немає Tty, щоб ввести його). З іншого боку, як звичайний користувач, ви не можете використовувати просто так, ddяк пропонується в іншій відповіді (у вас немає необхідних дозволів на пристрій). Ви можете вирішити проблему, надавши собі права виконувати ddяк sudo без пароля. Це можна зробити, відредагувавши файл sudoers (на пульті!):

sudo visudo

додати наступний рядок:

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

Тепер ви можете видавати:

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

і це має працювати. Ви можете зробити більш загальний запис у sudoers, що дозволяє вам запускати ddбудь-який параметр, але розумніше дозволити цей безкоштовний дозвіл мінімум, що вам потрібно.


Або ви можете просто запустити 'sudo ls' у відповідному кінці (і ввести пароль), безпосередньо перед запуском команди 'sudo dd ...'
MikeW

З новішими версіями DD додавання статусу = прогрес навіть дозволяє контролювати хід копіювання.
sensslen

7

Щойно я використав модифіковану версію на віртуальній скриньці Linux Mint для клонування фізичного жорсткого диска на старечому сервері RedHat.

Я запустив наступне як root у віртуальному вікні:

ssh root@192.168.1.5 "dd if=/dev/cciss/c0d0" | dd of=/dev/sdb
  • 192.168.1.5 - це фізичне поле Red Hat Enterprise Linux 2.1.
  • / dev / sdb - це новий віртуальний диск, який після закінчення клонування буде основою віртуальної версії старого вмираючого фізичного поля.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.