หากเจตนาของคุณคือการสำรองข้อมูลHDD Aของคอมพิวเตอร์ระยะไกลผ่าน SSH ไปยังไฟล์เดียวที่อยู่บน HDD ของคอมพิวเตอร์คุณสามารถทำอย่างใดอย่างหนึ่งต่อไปนี้
ตัวอย่าง
เรียกใช้จากคอมพิวเตอร์ระยะไกล
$ 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
วิธีการตรวจสอบ?
- ลงชื่อเข้าใช้ผ่าน
ssh
เทอร์มินัลอื่นและls -l
ไฟล์เพื่อดูขนาดของไฟล์
คุณสามารถใช้pv
เพื่อตรวจสอบความคืบหน้าของการดำเนินการ dd ขนาดใหญ่เช่นสำหรับตัวอย่างจากระยะไกลข้างต้นคุณสามารถทำได้:
$ dd if=/dev/sda | gzip -1 - | pv | ssh user@local dd of=image.gz
ส่งสัญญาณ "SIGUSR1" ไปที่dd
และมันจะพิมพ์สถิติ สิ่งที่ต้องการ:
$ pkill -USR1 dd
อ้างอิง
วิธีการดังกล่าวข้างต้นสำหรับการตรวจสอบที่ถูกทิ้งไว้ แต่เดิมผ่านทางความคิดเห็นโดย@Ryan & @bladtและตัวผมเอง ฉันย้ายคำตอบไปให้ชัดเจนยิ่งขึ้น
ONE
ฮาร์ดไดรฟ์ของคอมพิวเตอร์ระยะไกลไปยังที่TWO
เก็บข้อมูลของคอมพิวเตอร์ระยะไกล) เช่นนี้: <br /> [root @ ONE] # dd if = / dev / sda1 | ssh root @ TWOdd of=/root/Public/ONE/sda1.img
<br /> 409600 + 0 บันทึกใน 409600 + 0 บันทึก 209715200 ไบต์ (210 MB) คัดลอก, 0.894929 วินาที, 234 MB / s Pseudo-terminal จะไม่ถูกจัดสรรเพราะ stdin ไม่ใช่รหัสผ่านของ terminal @ TWO : ปัญหาคือ/root/Public/ONE/sda1.img
ไฟล์ถูกสร้างขึ้นONE
ไม่ใช่เปิดTWO
อย่างที่คาดไว้ ฉันจะแก้ไขสิ่งนี้ได้อย่างไร