ฉันกำลังมองหาวิธีที่รวดเร็วในการเปรียบเทียบเนื้อหาของไดเรกทอรี เป็นไปได้ไหมที่จะทำ md5sum (หรือ checksum ที่เทียบเท่า) ของไดเรกทอรีทั้งหมด?
ใช้ Ubuntu Linux
ฉันกำลังมองหาวิธีที่รวดเร็วในการเปรียบเทียบเนื้อหาของไดเรกทอรี เป็นไปได้ไหมที่จะทำ md5sum (หรือ checksum ที่เทียบเท่า) ของไดเรกทอรีทั้งหมด?
ใช้ Ubuntu Linux
คำตอบ:
แน่นอน - md5sum directory/*
หากคุณต้องการบางสิ่งที่ยืดหยุ่นกว่าเล็กน้อย (เช่นสำหรับการเปรียบเทียบไดเรกทอรีซ้ำหรือแฮช) ให้ลอง md5deep
apt-get install md5deep
md5deep -r directory
ในการเปรียบเทียบโครงสร้างไดเรกทอรีคุณสามารถให้รายการแฮชเพื่อเปรียบเทียบกับ:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
นี่จะแสดงผลไฟล์ทั้งหมดใน directory2 ที่ไม่ตรงกับ directory1
สิ่งนี้จะไม่แสดงไฟล์ที่ถูกลบออกจาก directory1 หรือไฟล์ที่ถูกเพิ่มไปยัง directory2
-j0
ที่ปิดการใช้งานมัลติเธรด (ดูหน้าคน)
md5deep
พร้อมกับsudo apt-get install md5deep
เมื่อUbuntu 16.04
แต่เมื่อฉันพยายามที่จะอ่านหน้าคนมันบอกฉันว่า> ไม่มีรายการคู่มือสำหรับ md5deep
หากคุณต้องการดูว่ามีอะไรแตกต่างกัน (ถ้ามี) ระหว่างสองไดเรกทอรี rsync น่าจะเหมาะสม
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
รายการนี้จะแสดงรายการไฟล์ที่แตกต่าง
diff -qr /source/directory/ /destination/directory/
จะแสดงไฟล์ที่แตกต่างกัน
username@hostname:/destination/directory
ฉันคิดว่าฉันตอบก่อนหน้านี้ด้วยคำตอบนี้:
find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum
ให้: b1a5b654afee985d5daccd42d41e19b2877d66b1
แนวคิดก็คือคุณแฮชไฟล์ทั้งหมดที่ตัดแฮชออกหนึ่งรายการต่อบรรทัดเรียงลำดับและแฮชที่ให้แฮชเดียว สิ่งนี้ไม่ได้ขึ้นอยู่กับชื่อของไฟล์
cfvแอปพลิเคประโยชน์มากไม่เพียง แต่จะสามารถตรวจสอบและสร้าง checksums MD5 ก็ยังสามารถทำ CRC32, sha1, ฝนตกหนักที่ตราไว้หุ้น PAR2
เพื่อสร้างไฟล์ตรวจสอบ CRC32 สำหรับไฟล์ทั้งหมดในไดเรกทอรีปัจจุบัน:
cfv -C
เพื่อสร้างไฟล์ MD5 checksum สำหรับไฟล์ทั้งหมดในไดเรกทอรีปัจจุบัน:
cfv -C -t md5 -f "ไดเรกทอรีปัจจุบัน. md5sums"
ในการสร้างไฟล์เช็คซัมแยกต่างหากสำหรับแต่ละไดเรกทอรีย่อย:
cfv -C -r
ในการสร้างไฟล์ตรวจสอบ "super" ที่มีไฟล์ในไดเรกทอรีย่อยทั้งหมด:
cfv -C -rr
ฉันใช้ hashdeep ตามที่อธิบายไว้ในคำตอบ askubuntu นี้: ตรวจสอบความถูกต้องของไฟล์ที่คัดลอก :
ในการคำนวณผลรวมตรวจสอบ:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
ในการตรวจสอบและแสดงความแตกต่าง:
$ cd <directory2>
$ hashdeep -ravvl -k ~/hashOutput.txt .
hashdeep: Audit passed
Input files examined: 0
Known files expecting: 0
Files matched: 13770
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
สิ่งนี้มีข้อได้เปรียบมากกว่า md5deep ซึ่งจะแสดงการเปลี่ยนชื่อ (ย้าย) เพิ่มและลบไฟล์รวมถึงการหลีกเลี่ยงปัญหาไฟล์ 0 ความยาวที่ชี้ไปที่ด้านล่างของhttp://www.meridiandiscovery.com/how- ไป
สิ่งนี้ใช้ได้กับฉัน: (เรียกใช้ขณะที่อยู่ในไดเรกทอรีที่คุณสนใจ)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
คุณสามารถสร้างผลรวม MD5 ของทุกไฟล์เดียวสั่งซื้อ checksums เหล่านี้ตามลำดับตัวอักษรและมีพวกเขา (มีหรือไม่มีบรรทัดใหม่) เนื่องจาก MD5 เป็นรหัสลับจึงควรใช้งานได้ดีกับแฮชของแฮช
ควรมีลำดับที่แน่นอนสำหรับสิ่งต่าง ๆ มิฉะนั้นคุณจะได้ผลลัพธ์ที่แตกต่างกันสำหรับผู้เรียนที่เท่ากัน
และคุณควรพิจารณาว่าการเพิ่มไฟล์บางส่วนให้เป็นหนึ่งใน dir สมบูรณ์จะเปลี่ยนผลถึงแม้ว่ามันจะเป็นเพียง.directory
ของ.DS_Store
ไฟล์
เป็นกรณีเฉพาะสมมติว่าคุณต้องการคัดลอกไฟล์บางส่วนจาก directory1 ไปยัง directory2 แล้วคุณต้องการตรวจสอบสำเนาที่ประสบความสำเร็จโดยใช้การเปรียบเทียบ md5
เป็นครั้งแรก cd ไปที่ directory1 และพิมพ์:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
ซึ่งจะสร้างไฟล์อ้างอิงที่มีผลรวม md5 สำหรับแต่ละไฟล์ใน directory1 เมื่อเสร็จแล้วสิ่งที่คุณต้องทำคือ cd to directory2 และพิมพ์:
md5sum -c ~/Desktop/md5sum.txt
โปรแกรม md5sum ดึงข้อมูลแต่ละพา ธ จากไฟล์ md5sum.txt คำนวณ md5sum ของไฟล์นั้นในโฟลเดอร์ปลายทางแล้วเปรียบเทียบกับผลรวมที่เก็บไว้ในไฟล์
หลังจากกระบวนการเสร็จสมบูรณ์คุณจะได้รับการสรุปเช่น 'ดังนั้นไฟล์จำนวนมากจึงไม่ตรงกัน' หรืออะไรทำนองนั้น
ฉันต้องการตรวจสอบความสมบูรณ์ของการสำรองข้อมูล / มิเรอร์ซึ่งมีไฟล์จำนวนมากและจบลงด้วยการเขียนโปรแกรมบรรทัดคำสั่งที่เรียกว่า MassHash มันเขียนใน Python มีตัวเรียกใช้ GTK + คุณอาจต้องการตรวจสอบ ...