Score:0

MD5 แฮชไฟล์ทั้งหมดภายใน usb และบันทึกไฟล์เอาต์พุตบน usb

ธง cm

ดังนั้นฉันจึงพยายามหาวิธีแฮชไฟล์ทั้งหมดภายในไดเร็กทอรี USB ฉันเจอโพสต์อื่นที่คล้ายกับของฉันรวมถึงสคริปต์ด้านล่าง:

ค้นหา "$PWD" -type d | จัดเรียง | ในขณะที่อ่านคำสั่ง; ทำ [ ! -f "${dir}"/@md5Sum.md5 ] && echo "กำลังดำเนินการ " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 มีอยู่แล้ว" ; [ ! -f "${dir}"/@md5Sum.md5 ] && md5sum "${dir}"/* > "${dir}"/@md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5;done

มันใช้งานได้ดีจริงๆ และทำทุกอย่างที่ฉันต้องการ แต่ฉันไม่สามารถหาวิธีแก้ไขเพื่อกำหนดเป้าหมายเป็น USB ได้ ฉันได้ให้ผู้ใช้ป้อนอุปกรณ์ USB แล้วโดยป้อน /dev/sdf หรือ /dev/sdg ฯลฯ แต่ฉันไม่สามารถหาวิธีนำข้อมูลนี้ไปใช้ในคำสั่งด้านบน คำแนะนำหรือข้อเสนอแนะเกี่ยวกับเรื่องนี้จะได้รับการชื่นชม

sudodus avatar
jp flag
คุณควรตรวจสอบว่าพาร์ติชั่นในไดรฟ์ USB **[auto]mounted** (และถ้าไม่ได้ mount)จากนั้นเปลี่ยนไดเร็กทอรี `cd` เป็น mountpoint และเรียกใช้สคริปต์ของคุณ
sudodus avatar
jp flag
[ลิงก์นี้](https://askubuntu.com/questions/11840/how-do-i-use-chmod-on-an-ntfs-or-fat32-partition/956072#956072) และ [ลิงก์นี้](https ://askubuntu.com/questions/958556/ubuntu-mounts-external-ntfs-drive-as-read-only/958604#958604) อาจมีประโยชน์หากการต่อเชื่อมอัตโนมัติของระบบไฟล์ Microsoft (FAT32, exFAT, NTFS) ไม่ได้ งาน.
cm flag
@sudodus ดังนั้นมันจึงเมานต์อัตโนมัติโดยไม่มีปัญหาและสามารถเข้าถึงทุกอย่างได้ คำสั่งที่ฉันเขียนคือการโคลน usb ทั้งหมดรวมถึงการเข้ารหัส bitlocker ลงใน usb ที่เหมือนกัน ฉันต้องการสร้างแฮช md5 ของ usb ต้นทางซึ่งจะถูกคัดลอกไปยังไดรฟ์ที่โคลนแล้วทำแฮช md5 อีกครั้งเพื่อตรวจสอบว่ามีอะไรเปลี่ยนแปลงระหว่างการคัดลอกหรือไม่
cm flag
และเหตุผลที่ฉันให้อินพุต /dev/sdf ฯลฯ คือเพื่อให้แน่ใจว่าไดเร็กทอรีทั้งหมดของ USB ไม่ใช่แค่พาร์ติชันเดี่ยว
sudodus avatar
jp flag
นั่นแตกต่างจากที่ฉันคิด เมื่อคุณเขียนว่า 'hashing all files' คุณสามารถใช้ `lsblk -f` และ `lsblk -m` เพื่อดูรายการไดรฟ์และพาร์ติชันทั้งหมด และด้วยวิธีนั้นระบุอักษรระบุอุปกรณ์ของไดรฟ์ USB คุณสามารถโคลนด้วยวิธีคร่าวๆ โดยใช้ `dd` กับไดรฟ์อื่นหรือไฟล์รูปภาพ หรืออย่างมีประสิทธิภาพมากขึ้นด้วย [Clonezilla](https://askubuntu.com/questions/958242/fastest-way-to-copy-hdd /958248#958248). เป็นการยากที่จะได้รับ md5sum ที่ทำซ้ำได้ของไดรฟ์ที่โคลน เนื่องจากไดรฟ์เป้าหมายอาจมีขนาดใหญ่กว่าไดรฟ์เดิม **ทดสอบว่าสำเนาที่คัดลอกมานั้นทำงานถูกต้องแทน**
cm flag
ฉันใช้ dd เพราะดูเหมือนจะเร็วที่สุด Clonezilla ทำงานไม่ถูกต้องสำหรับฉันไม่ว่าด้วยเหตุผลใดก็ตามและไม่ได้เป็นมิตรกับผู้ใช้จริงๆ ... ฉันจัดเรียงทุกอย่างตามคำสั่งของฉันแล้ว และผู้ใช้ปลายทางรู้วิธีค้นหาชื่ออุปกรณ์ usb ฉันสร้างโคลนนิ่งมาหลายเดือนที่ผ่านมาโดยใช้คำสั่งของฉัน ดังนั้นฉันจึงรู้ว่ามันได้ผล เป็นเพียงการพยายามรับคำสั่งนี้อย่างหมดจดที่ฉันแสดงความคิดเห็นในตอนแรกว่าจะทำงานกับสิ่งที่ฉันมี
sudodus avatar
jp flag
คุณกำลังสร้างไฟล์รูปภาพหรือสำเนาไดรฟ์ USB ที่โคลนอยู่หรือไม่
cm flag
บิตสำหรับการคัดลอกบิตของ USB
sudodus avatar
jp flag
จากนั้นคุณควรจะสามารถพิมพ์ขนาดที่ใช้ของไดรฟ์ USB ต้นทาง (ต้นฉบับ) (จนถึงส่วนท้ายของพาร์ติชันสุดท้าย) จากนั้นเรียกใช้ `dd` โดยใช้ bs และนับและไพพ์ผลลัพธ์ไปที่ `md5sum` หลังจากการโคลน คุณควรตรวจสอบว่าคุณได้รับผลลัพธ์เดียวกันในไดรฟ์เป้าหมาย โปรดทราบว่าโดยปกติแล้วไดรฟ์จะมีขนาดไม่เท่ากัน (เป็นไบต์) ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องตรวจสอบ bs และจำนวนด้วยตัวเลขเดียวกัน (ไดรฟ์เป้าหมายต้องมีขนาดใหญ่พอที่จะคัดลอกจนสุดพาร์ติชันสุดท้ายของไดรฟ์ต้นทาง)
cm flag
ดังนั้นฉันยังไม่ได้ลองสิ่งที่คุณแนะนำเลย (@sudodus) แต่ฉันลองแก้ไขด้านบนเป็น: `หา "/dev/$source" -type d | จัดเรียง | ในขณะที่อ่านแหล่งที่มา ทำ [ ! -f "${source}"/@md5Sum.md5 ] && echo "กำลังประมวลผล " "${source}" || echo "ข้าม " "${source}" " @md5Sum.md5 มีอยู่แล้ว" ; [ ! -f "${source}"/@md5Sum.md5 ] && md5sum "${source}"/* > "${dir}"/@md5Sum.md5 ; chmod a=r "${source}"/@md5Sum.md5;done` หลังจากทำสิ่งนี้ ดูเหมือนว่าจะไม่มีความคืบหน้าใดๆ และไม่มีอะไรถูกสร้างขึ้นใน USB ดังกล่าว... ตอนนี้ฉันรู้สึกงุนงงเล็กน้อย
sudodus avatar
jp flag
แทนที่จะพยายามแก้ไขสคริปต์ของคุณ ฉันเขียนคำตอบโดยเน้นไปที่สิ่งที่คิดว่าเป็นขั้นตอนสำคัญในการตรวจสอบไดรฟ์ USB 'ทั้งหมด' ฉันหวังว่ามันจะช่วยให้คุณบรรลุเป้าหมาย
Score:0
ธง jp

ฉันทำการทดสอบกับไฟล์ iso ของเซิร์ฟเวอร์ Ubuntu ubuntu-20.04.3-live-server-amd64.iso

จาก https://releases.ubuntu.com/20.04.3/ ด้วย sha256sum

f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98
  • ไฟล์ iso ถูกโคลนไปยังไดรฟ์ USB (คุณสามารถทำได้ด้วยเครื่องมือโคลนใดก็ได้)

  • ขนาดที่ใช้บนไดรฟ์ USB ถูกกำหนดด้วย

    sudo fdisk -lu /dev/sdx
    

    ที่ไหน x เป็นอักษรระบุไดรฟ์ (ระบุด้วย fdisk และตัวอย่างเช่น lsblk -ฉ) และจำนวนเซกเตอร์ (จาก 0 ถึง 'end_sector') คือ end_sector + 1ดังนั้นในตัวอย่างการทดสอบของฉัน 2463616 และขนาดเซกเตอร์คือ 512 ไบต์

  • ตรวจสอบว่าไม่ได้ติดตั้งระบบไฟล์ในไดรฟ์ และยกเลิกการต่อเชื่อมพาร์ติชันหากติดตั้ง (แต่อย่าดีดออก)

  • ตรวจสอบไดรฟ์ USB

    คำนวณผลรวมตรวจสอบในส่วนที่ใช้ทั้งหมดของไดรฟ์ USB

    sudo dd if=/dev/sdx bs=512 count=2463616|sha256sum
    

    ผลลัพธ์ของการตรวจสอบนี้จะเหมือนกับผลรวมของการตรวจสอบที่อัปโหลด ซึ่งยืนยันว่าการดำเนินการโคลนสำเร็จ คุณอาจต้องการไพพ์เอาต์พุตจาก วว ถึง md5sum.

  • หากผลรวมการตรวจสอบไม่ตรงกับคุณ โปรดตรวจสอบก่อนว่าจำนวนเซ็กเตอร์และจำนวนไบต์ถูกต้อง (คุณตรวจสอบส่วนที่ถูกต้องของไดรฟ์ USB แล้ว)


  • วิธีเดียวกันนี้ยังใช้ได้ผลเมื่อคุณโคลนจากไดรฟ์ USB หนึ่งไปยังไดรฟ์อื่นที่ใหญ่พอ ดังนั้นให้ตรวจสอบไดรฟ์ใหม่ (sha256sum หรือ md5sum ตามที่คุณเลือก)
cm flag
ขอบคุณมากสำหรับสิ่งนี้ sudo .... สุดท้ายนี้ฉันต้องการไฟล์ txt ที่มี md5 อยู่ข้างในซึ่งฉันสามารถสร้างได้ แต่มันบันทึกไปที่เดสก์ท็อปของฉันเสมอ ฉันจะบันทึกไปที่อื่นเช่น usb ได้อย่างไร
sudodus avatar
jp flag
คุณสามารถบันทึกผลลัพธ์ลงในไฟล์ในระบบไฟล์ที่ต่อเชื่อมได้ แต่ไม่สามารถบันทึกลงในไดรฟ์ที่คุณกำลังตรวจสอบได้ เพื่อหลีกเลี่ยงปัญหา คุณควรตรวจสอบด้วยว่าไม่มีการติดตั้งระบบไฟล์ในไดรฟ์ที่จะตรวจสอบ ดังนั้นให้ยกเลิกการต่อเชื่อมหากจำเป็น (แต่อย่านำออกเพราะจะเป็นการปิดพลังงานของไดรฟ์) ดังนั้นให้ใช้เส้นทางแบบเต็ม `/mountpoint/directory-path/file-name` ไปยังตำแหน่งที่คุณต้องการบันทึกผลลัพธ์

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา