ฉันสังเกตเห็นว่าโพสต์ดั้งเดิมค่อนข้างเก่า แต่ฉันคิดว่าข้อมูลนี้ยังคงมีประโยชน์สำหรับผู้ที่กำลังมองหาวิธีการตรวจสอบว่ามีการคัดลอกไฟล์อย่างถูกต้อง Rsync อาจเป็นวิธีที่ดีที่สุดในการคัดลอกข้อมูลและคำตอบที่ให้ไว้ในเธรดนี้เป็นสิ่งที่ดี แต่สำหรับผู้ที่ไม่ได้มีประสบการณ์กับ Linux ฉันจะพยายามอธิบายรายละเอียดเพิ่มเติม
สถานการณ์จำลอง: คุณเพิ่งคัดลอกข้อมูลจากดิสก์ไปยังอีกที่หนึ่งพร้อมด้วยไดเรกทอรีย่อยและไฟล์จำนวนมาก คุณต้องการตรวจสอบว่าข้อมูลทั้งหมดจะถูกคัดลอกอย่างถูกต้อง
แรกตรวจสอบว่ามีการติดตั้ง md5deep md5deep -v
โดยการออกคำสั่ง
หากคุณได้รับข้อความว่าบางสิ่งบางอย่างเช่น 'คำสั่งไม่พบ' apt-get install md5deep
แล้วติดตั้งโดย
จะถือว่าคุณต้องการจัดการกับไฟล์ปกติเท่านั้น หากคุณต้องการจัดการกับไฟล์ประเภทอื่น ๆ ให้อ้างถึงแฟล็ก -o ในคู่มือ md5deep ( man md5deep
)
ตอนนี้คุณก็พร้อมแล้วและเราคิดว่าคุณคัดลอกไฟล์จาก/mnt/orginal
ไปยัง/mnt/backup
แทนที่ไฟล์เหล่านี้สำหรับไดเรกทอรีใด ๆ ที่คุณใช้งานอยู่
อันดับแรกเปลี่ยนเป็นไดเรกทอรีต้นทางนี่คือต้นฉบับสำหรับไฟล์ที่คุณคัดลอกหรือสำรอง:
cd /mnt/orginal
จากนั้นทำการตรวจสอบไฟล์แต่ละไฟล์:
md5deep -rel -o f . >> /tmp/checksums.md5
คำสั่งนี้อธิบาย:
-r
เปิดใช้งานโหมดเรียกซ้ำ
-e
แสดงตัวบ่งชี้ความคืบหน้า
-l
เปิดใช้งานพา ธ ไฟล์ที่เกี่ยวข้อง
-o f
ใช้งานได้กับไฟล์ปกติเท่านั้น (ไม่ปิดกั้นอุปกรณ์ชื่อไปป์ ฯลฯ )
.
บอก md5deep ให้เริ่มในไดเรกทอรีปัจจุบัน
>> /tmp/checksums.md5
บอก md5deep /tmp/checksums.md5
เปลี่ยนเส้นทางออกทั้งหมดเพื่อ
หมายเหตุหากคุณต้องการเขียนทับเนื้อหาในเวอร์ชันก่อนหน้า/tmp/checksums.md5
ให้ใช้>
และไม่ใช้>>
โปรดทราบว่าคำสั่งนี้อาจใช้เวลาสักครู่ขึ้นอยู่กับ io-speed และขนาดของข้อมูล คุณสามารถทดลองกับ nice และ / หรือ ionice เพื่อเพิ่มประสิทธิภาพของ md5deep แต่นั่นอยู่นอกขอบเขตของคำตอบนี้
เมื่อสร้างผลรวมตรวจสอบเสร็จแล้วตอนนี้คุณมีไฟล์ที่มีรายการคล้ายกับ:
69c0a826b29c8f40b7ca5e56e53d7f83 ./oldconfig-11-09-2013/etc2/pf61d9fcfcfcfcfcf5f5a7f9a7c9f9a7c9a /etc2/apm/scripts.d/alsa e9b9131660a8013983bc5e19d7d669eb ./oldconfig-11-09-2013/etc2/ld.so.cache
คอลัมน์แรกคือผลรวมตรวจสอบ md5 และคอลัมน์ที่สองคือเส้นทางสัมพัทธ์ไปยังไฟล์ที่มีค่าตรวจสอบอยู่
หากคุณต้องการดูจำนวนไฟล์ที่มีอยู่ในไฟล์เช็คซัมให้ใช้คำสั่ง:
wc /tmp/checksums.md5 -l
ตอนนี้คุณต้องการตรวจสอบว่าข้อมูลที่คัดลอกนั้นถูกต้อง:
cd /mnt/backup
md5deep -o f -reX /tmp/checksums.md5 . >> /tmp/compare.result
ข้อแตกต่างจากเมื่อเราสร้าง checksums คือ -X ซึ่งแสดงแฮชปัจจุบันของไฟล์หากรายการในไฟล์ checksums.md5 ไม่ตรงกัน ดังนั้นเมื่อสิ้นสุดการทดสอบหาก/tmp/compare.result
ว่างเปล่าคุณสามารถเชื่อถือได้ว่าไฟล์ทั้งหมดจะถูกคัดลอกอย่างถูกต้องตั้งแต่ checksums ตรงกัน
โปรดทราบว่าเฉพาะไฟล์ที่อยู่ใน/tmp/checksums.md5
ไฟล์เท่านั้นที่จะถูกตรวจสอบเพื่อตรวจสอบความถูกต้องหากมีไฟล์เพิ่มเติมใด ๆ ใน/mnt/backup
ไดเรกทอรี md5deep จะไม่แจ้งให้คุณทราบเกี่ยวกับสิ่งเหล่านี้
หมายเหตุ:
sudo apt-get install md5deep
md5deep -rel /path/to/your/directory/ > directory_hash.md5
md5deep -X directory_hash.md5 -r /path/to/your/second/direcotory
ขอบคุณมาก