นี่เป็นสถานการณ์ที่ฉันพบบ่อยใน:
- ฉันมีเซิร์ฟเวอร์ต้นทางที่มีฮาร์ดไดรฟ์ 320GB อยู่ภายในนั้นและ RAM 16 GB ( รายละเอียดที่แน่นอนมีให้ที่นี่แต่เนื่องจากนี่เป็นปัญหาที่ฉันพบบ่อยในเครื่องอื่นเช่นกันฉันต้องการคำตอบสำหรับการทำงานใด ๆ เครื่อง Linux ที่ "สมเหตุสมผล")
- ฉันมีเซิร์ฟเวอร์สำรองที่มีพื้นที่ฮาร์ดไดรฟ์หลายเทราไบต์ ( รายละเอียดที่แน่นอนที่นี่ดูข้อจำกัดความรับผิดชอบด้านบน)
ฉันต้องการถ่ายโอนข้อมูล 320GB จากเซิร์ฟเวอร์ต้นทางไปยังเซิร์ฟเวอร์เป้าหมาย (โดยเฉพาะข้อมูลจาก/dev/sda
)
- คอมพิวเตอร์สองเครื่องนั้นอยู่ติดกันดังนั้นฉันจึงสามารถใช้สายเคเบิลระหว่างกันได้
- ฉันอยู่บน LAN และฉันใช้เราเตอร์ใหม่ ishซึ่งหมายความว่าความเร็วเครือข่ายของฉันควร "ดีเลิศ" เป็น 1000Mbit ใช่ไหม
- ความปลอดภัยไม่ใช่ปัญหา ฉันอยู่ในเครือข่ายท้องถิ่นและฉันเชื่อว่าทุกเครื่องในเครือข่ายรวมถึงเราเตอร์
- (ไม่บังคับ)ฉันไม่จำเป็นต้องมีการตรวจสอบข้อมูลที่ลงนาม แต่การตรวจสอบข้อผิดพลาดพื้นฐาน (เช่นแพ็คเก็ตที่ถูกทิ้งหรือไดรฟ์ไม่สามารถอ่านได้) ควรตรวจพบได้แทนที่จะหายเข้าไปในเอาต์พุต
ฉันค้นหาคำถามนี้ทางออนไลน์และทดสอบหลายคำสั่ง สิ่งที่ปรากฏบ่อยที่สุดคือ:
ssh user@192.168.1.100 'dd bs=16M if=/dev/sda | gzip' > backup_sda.gz
คำสั่งนี้พิสูจน์แล้วว่าช้าเกินไป (มันวิ่งไปหนึ่งชั่วโมงมีข้อมูลประมาณ 80GB เท่านั้น) ใช้เวลาประมาณ 1 นาทีและ 22 วินาทีสำหรับแพ็คเก็ตทดสอบ 1GB และจบลงด้วยความเร็วสองเท่าเมื่อไม่ได้บีบอัด ผลลัพธ์อาจถูกบิดเบือนด้วยข้อเท็จจริงที่ว่าไฟล์ที่ถ่ายโอนมีจำนวนน้อยกว่า RAM ในระบบต้นทาง
ยิ่งกว่านั้น (และนี่คือการทดสอบในชิ้นทดสอบ 1GB) ฉันได้รับปัญหาถ้าฉันใช้gzip
คำสั่งและdd
; ไฟล์ผลลัพธ์มีการตรวจสอบที่แตกต่างกันเมื่อดึงข้อมูลออกมาบนเป้าหมาย ฉันยังคงพยายามหาสาเหตุว่าเกิดอะไรขึ้น
/dev/sda
เป็นภาพหรือเพียงแค่ไฟล์ ทำไม rsync ไม่มีตัวเลือก? มีการ/dev/sda
ติดตั้งในขณะที่คุณdd
ed?