ฉันต้องการคัดลอกเนื้อหาเป็นกลุ่ม (reimage disk โดยใช้dd
) กับ netcat จากโฮสต์ A ถึง B ผ่านช่องทางเข้ารหัส ssh บน Linux
คำสั่งใดที่ฉันควรพิมพ์ที่ปลายทั้งสอง?
ฉันต้องการคัดลอกเนื้อหาเป็นกลุ่ม (reimage disk โดยใช้dd
) กับ netcat จากโฮสต์ A ถึง B ผ่านช่องทางเข้ารหัส ssh บน Linux
คำสั่งใดที่ฉันควรพิมพ์ที่ปลายทั้งสอง?
คำตอบ:
การคัดลอกจากต้นทางไปยังเป้าหมายโดยที่เป้าหมายมี sshd ที่ทำงานอยู่:
dd if=/dev/sda | gzip | ssh root@target 'gzip -d | dd of=/dev/sda'
การคัดลอกจากต้นทางไปยังเป้าหมายผ่าน sshd_host เมื่อเป้าหมายไม่ได้รัน sshd
nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
ssh -L 62222:target:62222 sshd_host &
ที่มา: dd if=/dev/sda | nc -w 3 localhost 62222
dd - if =เป็นแหล่งที่มาของ =เป็นปลายทางbs =คือขนาดบล็อก ขนาดบล็อกแตกต่างกันอาจปรับปรุงประสิทธิภาพ 16 มักเป็นจุดเริ่มต้นที่สมเหตุสมผล คุณยังสามารถใช้count =เพื่อระบุจำนวนบล็อกที่ต้องการคัดลอก
nc - -pหมายถึงพอร์ตที่จะใช้สำหรับการบริการ -lใช้เพื่อเริ่มบริการ -wตั้งค่าเวลาเพื่อรอข้อมูลในไปป์ไลน์ก่อนที่จะออก
ssh - -Lตั้งค่าช่องสัญญาณบนโฮสต์ระยะไกล local_port:target_host:target_port
รูปแบบของการโต้แย้งคือ โปรแกรมโลคัล (nc) ของคุณเชื่อมต่อกับ local_port การเชื่อมต่อนี้เป็นช่องสัญญาณและเชื่อมต่อกับ target_port บน target_host
ตัวเลือกที่กำหนดเป็นเพียงตัวเลือกที่ใช้สำหรับสิ่งนี้ ดูรายละเอียดเพิ่มเติมจาก man man
หมายเหตุเล็กน้อย:
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
ถ้าคุณต้องการใช้ netcat ที่ไม่มี ssh ฉันคิดว่าเป็นวิธีที่เร็วที่สุดและไม่ใช่อันที่ปลอดภัยคุณสามารถคัดลอกและกู้คืนดิสก์ทั้งหมดเช่นนี้:
บนคอมพิวเตอร์ A ด้วย IP 192.168.0.1
cat /dev/hdb | nc -p 9000
บนคอมพิวเตอร์ B
nc -l 192.168.0.1 9000 > /dev/hdb
จำไว้ว่าตาม man nc ตัวเลือก -l คือ:
-l ใช้เพื่อระบุว่า nc ควรฟังการเชื่อมต่อขาเข้าแทนที่จะเริ่มต้นการเชื่อมต่อกับโฮสต์ระยะไกล เป็นข้อผิดพลาดในการใช้ตัวเลือกนี้ร่วมกับตัวเลือก -p, -s หรือ -z
ไม่จำเป็นต้องใช้ netcat
บน src machine run:
dd if=/dev/sdX bs=1M | ssh root@dstMachine " dd of=/dev/sdY bs=1M"
ฉันถือว่าไม่มีพาร์ติชันบน sdX และ sdY ติดตั้งอยู่ คุณสามารถบูตกล่องทั้งสองด้วยknoppixหรือ distro สดอื่นที่คล้ายคลึงกัน
dd - รับข้อมูลจากถ้า [หากไม่ได้ให้ไว้ - นำมาจาก stdin] ส่งข้อมูลไปที่ของ [หากไม่ได้ระบุไว้ - ข้อมูลจะถูกส่งไปยัง stdout] bs - ขนาดบล็อก ... จะช่วยให้สิ่งต่าง ๆ เร็วขึ้น
ssh - รันคำสั่งที่ระบุไว้ในเครื่องหมายคำพูดบนกล่องรีโมตข้อมูลทั้งหมดที่ปั๊มไปยัง stdin ของ ssh จะถูกส่งสัญญาณไปยังเครื่องระยะไกลและ porovided เป็น stdin เพื่อดำเนินการคำสั่งที่นั่น
โฮสต์ A คือรูปภาพหนึ่งโฮสต์ B คือรูปภาพที่จะถูกเก็บไว้ใน:
root@A# dd if=/dev/sda | ssh root@B "dd of=/some/file"
การกู้คืนไปยังดิสก์จะแลกเปลี่ยนสองสิ่งนี้
ตราบใดที่ระบบไฟล์ทั้งคู่ไม่ถูกถอดออก dd ก็ทำงานได้ดี
(from server1) dd if=/dev/sda bs=32k | ssh <server2> dd of=/dev/sda bs=32k
คุณจะต้องตั้งค่าการรับรองความถูกต้องของโฮสต์ก่อนเวลามิฉะนั้นการแจ้งรหัสผ่านจะทำให้การคัดลอกล้มเหลว
การทำเช่นนี้กับปริมาณที่เมานต์จะให้ผลลัพธ์ที่ไม่ดี
หรือคุณสามารถใช้ clonezilla และ "mount" ที่เก็บข้อมูลระยะไกลของคุณผ่าน sshfs
ฉันลองใช้ตัวเลือกต่าง ๆ ที่มีให้ด้านบนและกำลังแบ่งปันผลลัพธ์กับคุณ เร็วที่สุดถึงช้าที่สุดโดยใช้การรวมกันของขนาดบล็อก dd, gzip และอัลกอริทึมการบีบอัด gzip
อย่างที่คุณเห็น gzip ให้ฉันปรับปรุงเมื่อใช้อัลกอริทึมเร็วร่วมกับขนาดบล็อก 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
มีการใช้เซิร์ฟเวอร์ที่รวดเร็วสองตัวเชื่อมต่อกับ GigE ผ่านสวิตช์ Enterprise GigE โดยใช้ดิสก์ภายในเครื่องผ่านทาง LVM
ดูเหมือนว่าคุณกำลังใช้ค้อนขนาดใหญ่ที่จะแตกน็อตที่นี่ - หรืออาจจะเป็นการเปรียบเทียบที่ดีกว่าคือพยายามตัดหญ้าด้วยกรรไกร :)
ฉันขอแนะนำอย่างยิ่งให้คุณดูเครื่องมือบางอย่างที่นั่นสำหรับการทำงานเช่นนี้เว้นแต่คุณจะมีเหตุผลที่ยอดเยี่ยมที่จะทำในบ้าน
Trinity Rescue Kitเป็น liveCD ฟรีที่รองรับไดรฟ์ภาพบนมัลติคาสต์และอาจทำในสิ่งที่คุณต้องการ (หรือใครก็ตามที่คิดในบรรทัดเดียวกัน) โดยไม่ต้องใช้ระบบการถ่ายภาพแบบเต็มแรง