Jawaban:
Menyalin dari sumber ke target tempat target menjalankan sshd:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
Menyalin dari sumber ke target melalui sshd_host ketika target tidak menjalankan sshd.
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
ssh -L 62222:target:62222 sshd_host &
Sumber: dd if=/dev/sda | nc -w 3 localhost 62222
dd - jika = adalah sumber, dari = adalah tujuannya, bs = adalah ukuran blok. Ukuran blok yang berbeda dapat meningkatkan kinerja. 16 biasanya merupakan titik awal yang cukup masuk akal. Anda juga dapat menggunakan count = untuk menunjukkan berapa banyak blok yang akan disalin.
nc - -p menunjukkan port yang akan digunakan untuk layanan. -l digunakan untuk memulai layanan. -w mengatur waktu untuk menunggu data dalam pipa sebelum berhenti.
ssh - -L mengatur terowongan pada host jarak jauh. Format argumennya adalah local_port:target_host:target_port
,. Program lokal Anda (nc) terhubung ke local_port, koneksi ini disalurkan dan terhubung ke target_port di target_host.
Opsi yang ditentukan hanya yang digunakan untuk ini. Lihatlah halaman manual untuk lebih jelasnya.
Beberapa catatan:
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
Jika Anda ingin menggunakan netcat tanpa ssh. Saya kira itu adalah cara tercepat dan bukan yang aman, Anda dapat menyalin dan mengembalikan seluruh disk seperti ini:
Di komputer A dengan IP 192.168.0.1
cat /dev/hdb | nc -p 9000
Di komputer B
nc -l 192.168.0.1 9000 > /dev/hdb
Ingat bahwa menurut man nc opsi -l adalah:
-l Digunakan untuk menentukan bahwa nc harus mendengarkan koneksi yang masuk daripada memulai koneksi ke host jarak jauh. Merupakan kesalahan untuk menggunakan opsi ini bersamaan dengan opsi -p, -s, atau -z.
netcat tidak diperlukan.
saat menjalankan mesin src:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
saya berasumsi tidak ada partisi pada sdX dan sdY yang di-mount. Anda dapat mem-boot kedua kotak dengan knoppix atau distro langsung serupa lainnya.
dd - mengambil data dari jika [jika tidak disediakan - mengambilnya dari stdin], mengirimkan data ke dari [jika tidak disediakan - data dikirim ke stdout]. bs - ukuran blok ... akan mempercepat.
ssh - mengeksekusi perintah yang diberikan dalam tanda kutip pada kotak jarak jauh, semua data yang dipompa ke stdin dari ssh akan disalurkan ke mesin jarak jauh dan disimpan sebagai stdin untuk perintah yang dijalankan di sana.
Host A adalah yang di-image, host B adalah di mana gambar akan disimpan:
root@A# dd if=/dev/sda | ssh root@B "dd of=/some/file"
Mengembalikan ke disk hanya akan menukar keduanya.
Salinan dasar dengan netcat dijelaskan di sini .
Jika Anda perlu melibatkan SSH dalam hal ini, Anda bisa menggunakan port forwarding untuk itu,
-R [bind_address:]port:host:hostport
Tapi, secara keseluruhan, Anda bisa melakukan transfer SSH di tempat pertama (tanpa netcat).
Selama filesystem keduanya tidak di-mount, dd berfungsi dengan baik.
(from server1) dd if=/dev/sda bs=32k | ssh <server2> dd of=/dev/sda bs=32k
Anda akan memerlukan pengaturan autentikasi tuan rumah sebelumnya atau jika kata sandi akan menyebabkan salinan gagal.
Melakukan ini pada volume yang terpasang akan menghasilkan hasil yang buruk.
Atau, Anda bisa menggunakan clonezilla dan "me-mount" penyimpanan jarak jauh Anda melalui sshfs.
Saya mencoba kombinasi opsi yang disediakan di atas, dan saya membagikan hasilnya dengan Anda. tercepat hingga paling lambat menggunakan kombinasi ukuran blok dd, algoritma kompresi gzip dan gzip.
Seperti yang Anda lihat, gzip hanya memberi saya peningkatan ketika menggunakan algoritma cepat bersamaan dengan ukuran blok 1M.
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 326.045 s, 39.5 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | gzip --fast | ssh hyp5 'gzip -d | dd of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 370.158 s, 34.8 MB/s
time dd if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 370.274 s, 34.8 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | ssh hyp5 dd bs=1M of=/dev/HypGroup00/stage
12884901888 bytes (13 GB) copied, 372.906 s, 34.6 MB/s
time dd bs=1M if=/dev/HypGroup00/stage-snapshot | gzip | ssh hyp5 'gzip -d | dd bs=1M of=/dev/HypGroup00/stage'
12884901888 bytes (13 GB) copied, 520.116 s, 24.8 MB/s
Dua server cepat digunakan terhubung dengan GigE melalui switch Enterprise GigE menggunakan disk lokal melalui LVM.
Sepertinya Anda menggunakan palu godam untuk memecahkan kacang di sini - atau mungkin analogi yang lebih baik sedang mencoba memotong rumput Anda dengan gunting :)
Saya sangat menyarankan Anda melihat beberapa alat di luar sana untuk melakukan pekerjaan seperti ini kecuali Anda punya alasan bagus untuk melakukannya di rumah.
Trinity Rescue Kit adalah liveCD gratis yang mendukung drive pencitraan lebih dari multicast, dan dapat melakukan apa yang Anda inginkan (atau memang orang lain berpikir pada baris yang sama), tanpa harus pergi ke sistem pencitraan yang penuh.