Score:1

แถบความคืบหน้า / ไอคอนกำลังโหลดขณะสร้างแฮช MD5 สำหรับ USB

ธง cm

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

ถ้า [[ $hashing != "y" && $hashing != "Y" ]]; แล้ว
                        เสียงสะท้อน -e "\n"
                        sudo dd if=dev/"$source" | md5sum
                                อ่าน -r เปรียบเทียบผลลัพธ์
                                        ฉัน=1
                                                sp="/-\|"
                                                เสียงสะท้อน -n ' '
                                                ในขณะที่จริง
                                                ทำ
                                                        พิมพ์f "\b${sp:i++%${#sp}:1}"
                                                เสร็จแล้ว
                                        ทางออก        
                    ไฟ ;;

สิ่งนี้ใช้วงล้อหมุนเพื่อแสดงไอคอนการโหลด และใช้งานได้โดยใช้สิ่งที่อยู่ด้านบน แต่ไม่ได้ในขณะนี้? ไม่แน่ใจว่าคำสั่งซื้อไม่ถูกต้องหรือฉันขาดอะไรไป ความช่วยเหลือใด ๆ จะขอบคุณมาก

#!/bin/bash
#Clone_คำสั่ง
ในขณะที่จริง
    ทำ
    sudo -s
    เสียงสะท้อน "============================
    echo "คำสั่งโคลน"
    เสียงสะท้อน "============================
    เสียงสะท้อน -e "\n"
    
    เสียงสะท้อน -e "\n"
    
    echo "ป้อน 1 สำหรับอุปกรณ์ต้นทาง"
    echo "ป้อน 'a' เพื่อแฮชอุปกรณ์ต้นทาง"
    echo "ใส่ 2 สำหรับอุปกรณ์ปลายทาง"
    echo "ป้อน 3 เพื่อแสดงรายการดิสก์ที่มีอยู่ทั้งหมด"
    echo "ป้อน 4 เพื่อดำเนินการคำสั่ง dd"
    echo "ใส่ 5 เพื่อเปรียบเทียบแฮช MD5"
    echo "ใส่ q เพื่อออก"
    เสียงสะท้อน -e "\n"
    echo "โปรดทราบว่ารายชื่อดิสก์ทั้งหมดคุณจะต้องโหลดสคริปต์ใหม่"
    เสียงสะท้อน -e "\n"
    echo -e "ป้อนตัวเลือกของคุณ \c"
    อ่าน -r ตัวเลือก
    กรณี "$choice" ใน
        คิว) ออก ;;
        1) echo -e "ป้อนอุปกรณ์ต้นทาง '/dev/---'
                
ใส่ตัวอักษร 3 ตัวท้ายของอุปกรณ์ เช่น - sdf หรือ sdb เป็นต้น"

            อ่าน -r ที่มา ;;
            
        ก) echo -e "การแฮชอุปกรณ์นี้อาจใช้เวลาสักครู่ขึ้นอยู่กับขนาด"
                เสียงสะท้อน -e "\n"
                echo -e "กด Enter หากคุณต้องการแฮชอุปกรณ์นี้"
                
                อ่าน -r แฮช 
                
                        ถ้า [[ $hashing != "y" && $hashing != "Y" ]]; แล้ว
                        เสียงสะท้อน -e "\n"
                        sudo dd if=dev/"$source" | md5sum
                                อ่าน -r เปรียบเทียบผลลัพธ์
                                        ฉัน=1
                                                sp="/-\|"
                                                เสียงสะท้อน -n ' '
                                                ในขณะที่จริง
                                                ทำ
                                                        พิมพ์f "\b${sp:i++%${#sp}:1}"
                                                เสร็จแล้ว
                                        ทางออก        
                    ไฟ ;;
            
        2) echo -e "ป้อนอุปกรณ์ปลายทาง '/dev/---'
                
ใส่ตัวอักษร 3 ตัวท้ายของอุปกรณ์ เช่น - sdf หรือ sdb เป็นต้น"

            อ่าน -r ปลายทาง ;;
            
        3) echo -e "กด Enter เพื่อแสดงรายการดิสก์ที่มีอยู่ทั้งหมด \c"
            อ่าน -r ตอบ
        ถ้า [[ $answ != "y" && $answ != "Y" ]]; แล้ว
        แจ่มใส
        sudo lshw -คลาสดิสก์
        ทางออก
        ไฟ ;;
        
        4) echo -e "การดำเนินการนี้จะจัดรูปแบบ $destination หากคุณต้องการดำเนินการต่อให้กด Enter \c"  
            อ่าน -r ans
        ถ้า [[ $ans != "y" && $ans != "Y" ]]; แล้ว
        เสียงสะท้อน -e "\n"
            sudo dd if=/dev/"$source" of=/dev/"$destination" bs=4096 status=progress
            ทางออก
        ไฟ ;;
        
        5) echo -e "หากคุณต้องการเปรียบเทียบ MD5 Hash ของ USB ทั้งสอง ให้กด 'Enter'\c"
                อ่าน -r เปรียบเทียบ
        ถ้า [[ $compare != "y" && $compare != "Y" ]]; แล้ว
               เสียงสะท้อน -e "\n"
               echo -e "โปรดทราบว่านี่ไม่ใช่กระบวนการด่วน"
               เสียงสะท้อน -e "n"
               md5sum -c <<<"$compareresult /dev/$destination"
        ไฟ ;;
    เอสแซค
เสร็จแล้ว            
sudodus avatar
jp flag
มีซอฟต์แวร์หรือข้อมูลใดบ้างในไดรฟ์ USB คุณทำมันเอง? หรือคุณต้องการตรวจสอบสิ่งที่คุณติดตั้งจากไฟล์รูปภาพหรือไฟล์ iso? คุณวางแผนที่จะอ่านอะไรใน `compareresult` ? -- สปินเนอร์เริ่ม *หลังจาก* md5sum เสร็จสิ้น ฉันแนะนำให้ใส่ลงในพื้นหลัง (ด้วย `&`) และตรวจสอบว่ากระบวนการเสร็จสิ้นหรือใส่สปินเนอร์ลงในพื้นหลัง -- อีกทางเลือกหนึ่งคือสร้างไฟล์อิมเมจ (อาจจะเป็นสิ่งที่คุณต้องการก็ได้) จากนั้นเรียกใช้ `md5sum` บนไฟล์นั้น -- อีกทางเลือกหนึ่งคือการใช้ `pv` (มุมมองความคืบหน้า) แทน `dd`
cm flag
@sudodus แท่ง USB ประกอบด้วย pdfs, word docs และอื่น ๆ ด้วยการเข้ารหัส bitlocker เช่นกัน ฉันหวังว่า `compareresult` จะใช้แฮช md5 ที่สร้างขึ้นของ USB ทั้งหมดเพื่อตรวจสอบกับแท่ง USB ที่ลอกแบบมา ซึ่งฉันไม่คิดว่าจะไม่ทำ lol เกี่ยวกับการวางสปินเนอร์ในพื้นหลัง ฉันจะเพิ่มสิ่งนี้ได้ที่ไหน ฉันจะเพิ่มสคริปต์ทั้งหมดด้วยเพื่อให้เข้าใจง่ายขึ้น
bac0n avatar
cn flag
คุณต้องได้รับแท็บและพื้นที่ของคุณเพื่อให้ดูน่าสมเพชเกินไป
Score:0
ธง jp

ดูความคืบหน้าด้วย พีวี

แนวคิดของคุณมีปัญหาทั่วไปเนื่องจากแท่ง USB มีขนาดแตกต่างกันเล็กน้อยแม้ว่าขนาดระบุจะเท่ากันก็ตาม และนั่นจะส่งผลต่อ md5sum ของอุปกรณ์ทั้งหมด

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

คุณสามารถใช้สปินเนอร์แทนได้ พีวีมุมมองความคืบหน้า ตัวอย่างเช่น

$ sudo pv /dev/sdc | md5sum
29,8GiB 0:13:46 [37,0MiB/s] [================================== ==============>] 100%            
2372da0e77d754a912078af8e47b36c9 -
$ 

การตรวจสอบเฉพาะพาร์ติชันที่เกี่ยวข้องจะดีกว่า

$ lsblk -f /dev/sdc
ชื่อ FSTYPE LABEL UUID MOUNTPOINT
เอสดีซี                                                           
ââsdc1                                                        
ââsdc2 vไขมัน 34D9-D113                            
ââsdc3 ต่อ 4 3c66d05d-bc02-4a1e-baca-e227a161e345 
ââsdc4 crypto_LUKS 371f0cbc-3f6f-49dd-9fc4-4cdf91cb15c9 

ในกรณีนี้ พาร์ติชัน #4

$ sudo pv /dev/sdc4 | md5sum
1,66GiB 0:00:46 [36,2MiB/s] [================================== ==============>] 100%            
35d33ae006c90b47b2e7b9aacb7f9bd7 -

โปรดจำไว้ว่า ยกเลิกการต่อเชื่อม พาร์ติชันบนแท่ง USB ก่อนตรวจสอบ md5sum

โคลนไดรฟ์ด้วยเข็มขัดนิรภัย

คุณสามารถโคลนจากแท่ง USB หนึ่งไปยังอีกแท่งหนึ่ง (หรือการ์ดหรือ SSD อุปกรณ์จัดเก็บข้อมูลจำนวนมาก) ด้วย mkusb-dus ซึ่งยังใช้ พีวี ถ้าติดตั้งและ ดูล้าง เพื่อติดตามความคืบหน้าของการดำเนินการโคลนนิ่ง สมมติว่าไดรฟ์ต้นทางคือ เอสดีเอ็กซ์, วิ่ง

ดัส /dev/sdx

ซึ่งจะช่วยคุณระบุไดรฟ์เป้าหมายที่ถูกต้อง (ช่วยให้คุณหลีกเลี่ยงการเขียนทับไดรฟ์ที่ไม่ถูกต้อง) ดังนั้นคุณจึงไม่ต้องระบุเป้าหมายในบรรทัดคำสั่ง

cm flag
ขอขอบคุณสำหรับความช่วยเหลือในเรื่องนี้ สามารถใช้ `pv` สำหรับอย่างอื่นหรือใช้สำหรับสร้างแฮชเท่านั้น เนื่องจากนี่จะเป็นแถบความคืบหน้าที่ดีในการแสดงความคืบหน้าของการโคลนนิ่ง
sudodus avatar
jp flag
คุณสามารถไพพ์ผ่าน `pv` ได้ คุณสามารถใช้มันสำหรับ 'อะไรก็ได้' แต่เมื่อเขียนถึงสื่อที่ช้าเช่น ไดรฟ์ USB จะมีการบัฟเฟอร์ใน RAM และคุณควรเรียกใช้ "ซิงค์" และรอในขณะที่ล้างบัฟเฟอร์ ในแพ็คเกจ [mkusb](https://help.ubuntu.com/community/mkusb) มี shellscript `watch-flush` ซึ่งคุณสามารถใช้แยกกันได้หากต้องการ-- และคุณสามารถใช้ `mkusb-dus` เพื่อโคลนสติ๊กและดูความคืบหน้า (ในตัว mkusb)
sudodus avatar
jp flag
โปรดระวังเครื่องมือโคลนอื่นๆ และคุณลักษณะพิเศษ 'ตารางพาร์ติชันสำรอง' ของตารางพาร์ติชัน GUID อ่านเพิ่มเติมได้ที่[ลิงก์นี้](https://askubuntu.com/questions/958242/fastest-way-to-copy-hdd/958248#958248)
cm flag
พยายามทำให้ Clonezilla ทำงานและด้วยเหตุผลบางอย่างก็ไม่ได้ผล .... อาจกลับมาดูอีกครั้ง แต่ฉันลงทุนสร้างสคริปต์ของตัวเองไปแล้ว ฉันอาจจะดำเนินการต่อในสิ่งที่ฉันมี :D ขอบคุณสำหรับความช่วยเหลือของคุณ
sudodus avatar
jp flag
@cameron.g ยินดีต้อนรับและขอให้โชคดีกับสคริปต์ของคุณเอง :-) / คุณสามารถยืมสิ่งของจาก mkusb ของฉันได้หากต้องการ ส่วนใหญ่เป็น bash./
sudodus avatar
jp flag
@bac0n คุณพบข้อบกพร่องใน mkusb หรือไม่ ฉันขอโทษ แต่ฉันไม่เข้าใจ โปรดอธิบายบริบท
sudodus avatar
jp flag
@bac0n ขอบคุณสำหรับการแจ้งให้ทราบล่วงหน้า ฉันจะตรวจสอบให้ แต่จะยินดีถ้าคุณบอกฉันว่าคุณพบอะไร :-)
bac0n avatar
cn flag
@sudodus อาจมีไฟล์ชื่อเช่น `a$` (บางถึงศูนย์ แต่ยังคง) `grep [a-z]$` จะขยายเป็น `grep a$` (กลม) ซึ่งอาจไม่เป็นที่ต้องการ ควรอ้างอิงรูปแบบเพื่อหลีกเลี่ยงการขยายตัวของโลก
sudodus avatar
jp flag
@bac0n ฉันได้ [พยายาม] อ้างอิง grep 'รูปแบบ' ทั้งหมดใน mkusb เวอร์ชันปัจจุบัน: mkusb-dus และ mkusb-plug ดู https://github.com/sudodus/tarballs หรือหากคุณใช้ mkusb: อัปเกรดผ่าน `ppa:mkusb/unstable` เป็นเวอร์ชัน 12.7.2 หากคุณ/พอมีเวลา โปรดตรวจสอบว่าคุณพบคำสั่งที่มีปัญหาซึ่งฉันยังไม่ได้ระบุและแก้ไขหรือไม่
bac0n avatar
cn flag
แน่นอน ..........

โพสต์คำตอบ

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