วิธีการตรวจสอบความสมบูรณ์ของการสำรองข้อมูลวัน?


11

ฉันเพิ่งสำรองข้อมูลฮาร์ดไดรฟ์ทั้งหมด (50GB) ไปsshทาง:

dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

ตอนนี้วิธีที่ดีที่สุดในการตรวจสอบความสมบูรณ์ของไฟล์image.imgคือวิธีการตรวจสอบว่าทุกอย่างถูกคัดลอกอย่างถูกต้องหรือไม่


โดยปกติเมื่อคุณวามันจะสมบูรณ์แบบเสมอ อย่างไรก็ตามคุณสามารถเรียกใช้ sha1sum ได้ตลอดเวลาเพื่อตรวจสอบแฮช sha1 ของต้นฉบับและข้อมูลสำรอง
darnir

2
" โดยปกติ ... มันสมบูรณ์แบบเสมอ " สิ่งนี้ทำให้ฉันนึกถึงคำพูดของ The Naked Gun: "หมอบอกว่า Nordberg มีโอกาสอยู่ 50/50 แม้ว่าจะมีโอกาสเพียง 10 เปอร์เซ็นต์เท่านั้น"
Sparhawk

คำตอบ:


10

หากคำสั่งยกเลิกสำเร็จข้อมูลสำรองจะถูกต้องยกเว้นความผิดพลาดของฮาร์ดแวร์ (ซึ่งอาจส่งผลกระทบต่อการตรวจสอบที่คุณอาจทำ) ในภายหลังอาจไม่ถูกต้องหากฮาร์ดแวร์มีข้อบกพร่อง แต่ฮาร์ดแวร์หน่วยเก็บข้อมูลส่วนใหญ่ตรวจพบความเสียหาย

มีหนึ่ง caveat อยู่ที่นี่: ในไปป์ไลน์เชลล์จะไม่รายงานข้อผิดพลาดจากด้านซ้ายมือ (นี่เป็นเพราะสถานการณ์กันอย่างเป็นธรรมที่ด้านขวามือไม่ต้องอ่านข้อมูลทั้งหมดเช่นsome_command | headและตายด้านซ้ายมือเพราะผลลัพธ์ที่ได้จะไม่อยาก.) ดังนั้นที่นี่ข้อผิดพลาดจากการอ่านddหากว่า ถูกเพิกเฉย ใน bash ตั้งค่าpipefailตัวเลือกเพื่อรายงานข้อผิดพลาดจากทุกส่วนของไปป์ไลน์

นอกจากนี้ระวังที่dd bs=…จะไม่สนใจข้อผิดพลาดบางและมักจะช้ากว่าทางเลือกdd ฉันไม่แนะนำให้ใช้ddเลย: ไม่มีประโยชน์เลยที่จะคัดลอกทั้งไฟล์ ขัดกับสิ่งที่คุณอาจมีบางแห่งที่อ่านddไม่ได้เป็นระดับต่ำคำสั่งการเข้าถึงดิสก์ที่มีคุณสมบัติพิเศษอย่างมีความมหัศจรรย์ในไม่มีเวทมนตร์อยู่ในdd/dev/hda

shopt -s pipefail
set -e
</dev/hda buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

อย่างไรก็ตามหากคุณต้องการตรวจสอบการสำรองข้อมูลวิธีที่ดีที่สุดคือการตรวจสอบการเข้ารหัสลับในแต่ละด้านและเปรียบเทียบ ตัวอย่างเช่น:

ssh myuser@myhost "sha1sum image.img" &
sudo sha1sum /dev/hda

ตรวจสอบว่าเช็คซัมทั้งสองนั้นเหมือนกัน

โปรดทราบว่าสิ่งนี้จะทดสอบว่าการสำรองข้อมูลและต้นฉบับเหมือนกันในเวลาที่ตรวจสอบหรือไม่ สิ่งใดก็ตามที่คุณเปลี่ยนแปลง/dev/hdaรวมถึงการติดตั้งและยกเลิกการต่อเชื่อมระบบไฟล์แม้จะไม่ทำการเปลี่ยนแปลงใด ๆ (ซึ่งจะอัปเดตวันที่ติดตั้งครั้งล่าสุดในระบบไฟล์หลาย ๆ ระบบ) จะเปลี่ยนการตรวจสอบ หากคุณต้องการตรวจสอบความถูกต้องในภายหลังให้จดบันทึกการตรวจสอบของดิสก์ในเวลาที่ทำการสำรองข้อมูล


3
โปรดทราบว่าถ้าอะไรที่เกี่ยวกับการ/dev/hdaมีการเปลี่ยนแปลงตั้งแต่กลับขึ้นได้ทำแฮชจะไม่ตรงกับ
bahamat

ประโยชน์ของการตรวจสอบแฮชคือการลบเท็จ (ข้อผิดพลาดที่เกิดขึ้นในการบันทึกภาพคือโดยบังเอิญเกิดขึ้นซ้ำ ๆ ในระหว่างการแฮชเพื่อไม่ให้ความผิดพลาดเกิดขึ้น) เป็นข้อผิดพลาดทางดาราศาสตร์ หากมีความผิดพลาดของฮาร์ดแวร์เกิดขึ้นควรส่งผลให้เกิดการตรวจสอบแฮชที่ล้มเหลว จะได้รับการตรวจสอบเท็จบวกล้มเหลวหากมีการเปลี่ยนแปลงดิสก์ตามที่ได้รับการบันทึก
Steven Lu

@StevenLu ไม่โอกาสของความสัมพันธ์ค่อนข้างสูงเนื่องจากความผิดพลาดของฮาร์ดแวร์ไม่ได้สุ่มอย่างสม่ำเสมอ โดยเฉพาะอย่างยิ่งข้อผิดพลาดของ RAM (ซึ่งเป็นความผิดพลาดของฮาร์ดแวร์ที่พบได้ทั่วไปในพีซีทั่วไป) เกิดขึ้นที่บิตเฉพาะ
Gilles 'หยุดความชั่วร้าย'

โอเคอาจ ... แฮชแบบนี้มีเกลือเม็ดใหญ่แน่นอน แต่ OP กำลังถ่ายโอนผ่านเครือข่าย มันไม่น่าเชื่อถือโดยเนื้อแท้ TCP ถึงแม้ว่า นอกจากนี้อาจเป็นไปได้ว่าเราจะไม่เห็นรูปแบบการเข้าถึงที่แน่นอนเดียวกัน (ในหน่วยความจำกายภาพ)
Steven Lu

คำถามที่เกี่ยวข้องใหม่ที่ต้องการความกระจ่างเกี่ยวกับ @Gilles ประโยคแรก
Sparhawk

5

ตามที่ darnir & Giles กล่าวถึงสิ่งที่ดีที่สุดที่ต้องทำคือเรียกใช้แฮชการเข้ารหัสลับทันทีหลังจากสำรองข้อมูลก่อนที่จะมีการเปลี่ยนแปลงอะไรบนดิสก์ต้นทางของคุณ อย่างไรก็ตามหากคุณใช้ดิสก์ตั้งแต่นั้นแฮชจะไม่ตรงกัน แม้การเปลี่ยนหนึ่งไบต์บนดิสก์จะทำให้แฮชแตกต่างกันโดยสิ้นเชิง

แม้ว่าจะน้อยกว่าอุดมคติ แต่คุณสามารถตรวจสอบภาพโดยการติดตั้ง บนระบบที่มีดิสก์อิมเมจให้เรียกใช้สิ่งต่อไปนี้ (สร้าง/mnt/diskหากไม่มีอยู่หรือเป็นตำแหน่งสำรอง):

mount -o loop image.img /mnt/disk

จากนั้นคุณสามารถเรียกดูรอบ ๆ/mnt/diskและดูไฟล์ทั้งหมด ตรวจสอบแฮช sha1 ของไฟล์สำคัญภายในภาพกับต้นฉบับเพื่อยืนยันความถูกต้อง


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.