Puncte:1

Bara de progres / Pictograma de încărcare în timp ce creați un hash MD5 pentru un USB

drapel cm

Încerc să creez o bară de progres sau un fel de pictogramă de încărcare pentru a arăta că se creează un hash, în loc de un ecran gol fără să se întâmple nimic... Iată ce am până acum:

if [[ $hashing != "y" && $hashing != "Y" ]]; atunci
                        echo -e „\n”
                        sudo dd if=dev/"$sursa" | md5sum
                                citește -r compara rezultat
                                        i=1
                                                sp="/-\|"
                                                ecou -n ' '
                                                în timp ce adevărat
                                                do
                                                        printf „\b${sp:i++%${#sp}:1}”
                                                Terminat
                                        Ieșire        
                    fi ;;

Aceasta folosește o roată care se învârte pentru a reprezenta o pictogramă de încărcare. Și funcționează folosind ceea ce este mai sus. Dar nu-i așa în acest moment? Nu sunt sigur dacă comanda este incorectă sau dacă îmi lipsește ceva. Orice ajutor ar fi grozav multumesc

#!/bin/bash
#Clone_Command
în timp ce adevărat
    do
    sudo -s
    ecou "============================"
    echo "Clone Command"
    ecou "============================"
    echo -e „\n”
    
    echo -e „\n”
    
    echo „Introduceți 1 pentru dispozitivul sursă”
    echo „Introduceți „a” la dispozitivul sursă hash”
    echo „Introduceți 2 pentru dispozitivul de destinație”
    echo „Introduceți 3 pentru a lista toate discurile disponibile”
    echo „Introduceți 4 pentru a executa comanda dd”
    echo „Introduceți 5 pentru a compara hashurile MD5”
    echo „Introduceți q pentru a ieși”
    echo -e „\n”
    echo „REȚINEȚI că LISTAREA TOATE DISCURILE VA NECESITA SĂ REÎNCĂRCȚI SCRIPTUL”
    echo -e „\n”
    echo -e "Introduceți alegerea dvs. \c"
    citeste alegerea -r
    cazul „$choice” în
        q) ieșire;;
        1) echo -e „Introduceți dispozitivul sursă „/dev/---”
                
Introduceți ultimele 3 litere ale dispozitivului, de exemplu - sdf sau sdb etc"

            citeste sursa -r ;;
            
        a) echo -e „Hashingul acestui dispozitiv poate dura ceva timp, în funcție de dimensiune”
                echo -e „\n”
                echo -e „Apăsați pe Enter dacă doriți să faceți hash acest dispozitiv”
                
                citiți hashingul -r 
                
                        if [[ $hashing != "y" && $hashing != "Y" ]]; atunci
                        echo -e „\n”
                        sudo dd if=dev/"$sursa" | md5sum
                                citește -r compara rezultat
                                        i=1
                                                sp="/-\|"
                                                ecou -n ' '
                                                în timp ce adevărat
                                                do
                                                        printf „\b${sp:i++%${#sp}:1}”
                                                Terminat
                                        Ieșire        
                    fi ;;
            
        2) echo -e „Introduceți dispozitivul de destinație „/dev/---”
                
Introduceți ultimele 3 litere ale dispozitivului, de exemplu - sdf sau sdb etc"

            citire -r destinație ;;
            
        3) echo -e „Apăsați enter pentru a lista toate discurile disponibile \c”
            citește -r răspuns
        dacă [[ $răspuns != "y" && $răspuns != "Y" ]]; atunci
        clar
        sudo lshw -class disc
        Ieșire
        fi ;;
        
        4) echo -e "Acest lucru va formata $destinația. Dacă doriți să continuați apăsați enter \c"  
            citeste -r ans
        dacă [[ $ans != "y" && $ans != "Y" ]]; atunci
        echo -e „\n”
            sudo dd if=/dev/"$sursa" of=/dev/"$destinație" bs=4096 status=progres
            Ieșire
        fi ;;
        
        5) echo -e „Dacă doriți să comparați MD5 Hash pentru ambele USB-uri, atunci apăsați „Enter”\c”
                citeste -r compara
        if [[ $compara != "y" && $compara != "Y" ]]; atunci
               echo -e „\n”
               echo -e „Vă rugăm să rețineți că acesta nu este un proces rapid”
               ecou -e "n"
               md5sum -c <<<"$compareresult /dev/$destination"
        fi ;;
    esac
Terminat            
sudodus avatar
drapel jp
Ce software sau date există pe unitatea USB? L-ai făcut singur? Sau doriți să verificați ceva ce ați instalat dintr-un fișier imagine sau dintr-un fișier iso? Ce intenționați să citiți în „compareresult”? -- Spinerul începe *după ce* md5sum s-a terminat. Vă sugerez să îl puneți în fundal (cu `&`) și să verificați dacă procesul se termină sau să puneți filatorul în fundal. -- O alternativă este să creați un fișier imagine (poate că asta este ceea ce doriți oricum) și apoi să rulați `md5sum` pe acel fișier. -- O altă alternativă este să folosiți `pv` (vedere de progres) în loc de `dd`.
drapel cm
@sudodus Stick-ul USB este format din pdf-uri, documente Word etc. Cu o criptare bitlocker pe el, de asemenea. Speram că `compareresult` va lua hash-ul md5 creat al întregului USB pentru a verifica față de stick-ul USB clonat, ceea ce nu cred că nu face lol. În ceea ce privește punerea filatorului în fundal, unde aș adăuga asta? Voi adăuga și întregul script pentru a fi mai ușor de înțeles.
bac0n avatar
drapel cn
Trebuie să-ți iei file și spațiu pentru ca să pară prea mizerabil.
Puncte:0
drapel jp

Vizualizare progres cu pv

Există o problemă generală cu conceptul dvs. deoarece stick-urile USB au dimensiuni ușor diferite chiar și atunci când dimensiunea nominală este aceeași, iar asta va afecta suma md5 a întregului dispozitiv.

  • daca tu verificați suma md5 a fiecărei partiții, puteți verifica dacă originalul și copia clonată sunt identice.
  • O alternativă este să stocați un fișier imagine și utilizați suma md5 și dimensiunea imaginii de aplicat pe stick-uri (verificând cu dd exact același număr de octeți ca în fișierul imagine).

În loc de un filator puteți folosi pv, vizualizarea progresului, de exemplu

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

Poate fi mai bine să verificați numai partițiile relevante,

$ lsblk -f /dev/sdc
NUME FSTYPE LABEL UUID MOUNTPOINT
sdc                                                           
ââsdc1                                                        
ââsdc2 vfat 34D9-D113                            
ââsdc3 ext4 3c66d05d-bc02-4a1e-baca-e227a161e345 
ââsdc4 crypto_LUKS 371f0cbc-3f6f-49dd-9fc4-4cdf91cb15c9 

în acest caz, partiția #4,

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

Vă rugăm să nu uitați demonta partițiile de pe stick-ul USB înainte de a verifica md5sum.

Clonarea unei unități cu o centură de siguranță

Puteți clona de pe un stick USB pe un alt stick (sau card sau SSD, orice dispozitiv de stocare în masă) cu mkusb-dus care foloseşte şi pv dacă este instalat și spălarea ceasului pentru a monitoriza progresul operațiunii de clonare. Presupunând că unitatea sursă este sdx, alerga

dus /dev/sdx

Vă va ajuta să identificați unitatea țintă corectă (vă va ajuta să evitați suprascrierea unității greșite), astfel încât să nu specificați ținta pe linia de comandă.

drapel cm
Apreciez ajutorul pentru aceasta. Poate fi folosit `pv` pentru orice altceva sau este doar pentru a crea un hash? Deoarece aceasta ar fi o bară de progres plăcută, trebuie să arate progresul clonării stick-ului.
sudodus avatar
drapel jp
Puteți să o conductați prin `pv`, așa că da, o puteți folosi pentru 'orice'. Dar când scrieți pe medii lente, de ex. Pendrive USB, va exista buffering în RAM și ar trebui să rulați, de asemenea, `sync` și să așteptați în timp ce ștergeți buffer-urile. În pachetul [mkusb](https://help.ubuntu.com/community/mkusb) există un shellscript `watch-flush`, pe care îl puteți folosi separat dacă doriți.-- Și puteți folosi `mkusb-dus` pentru a clona stick-ul și a vedea progresul (încorporat în mkusb).
sudodus avatar
drapel jp
Vă rugăm să fiți conștienți de alte instrumente de clonare și de caracteristica specială „tabel de partiții de rezervă” a tabelelor de partiții GUID. Citiți mai multe despre el la [acest link](https://askubuntu.com/questions/958242/fastest-way-to-copy-hdd/958248#958248).
drapel cm
Am încercat să o fac pe Clonezilla să funcționeze și dintr-un motiv oarecare nu a funcționat prea bine... S-ar putea să-l revăd, dar deja investesc atât de mult în construirea propriului meu script încât s-ar putea să continui cu ceea ce am :D. Multumesc pentru ajutor
sudodus avatar
drapel jp
@cameron.g, Ești binevenit și succes cu propriul script :-) /Poți împrumuta lucruri de pe mkusb-ul meu dacă vrei; este în principal bash./
sudodus avatar
drapel jp
@bac0n, ai găsit o eroare în mkusb? Îmi pare rău, dar nu înțeleg. Vă rog să explicați contextul.
sudodus avatar
drapel jp
@bac0n, Mulțumesc pentru atenție. O sa verific, dar m-as bucura daca imi spui ce ai gasit :-)
bac0n avatar
drapel cn
@sudodus Probabil că există un fișier numit, de exemplu, `a$` (subțire la zero, dar totuși) `grep [a-z]$` se va extinde la `grep a$` (globbing), ceea ce probabil nu este de dorit. Modelul trebuie citat pentru a evita extinderea globului.
sudodus avatar
drapel jp
@bac0n, am [încercat] să citez toate „modelele” grep din versiunile curente de mkusb: mkusb-dus și mkusb-plug. Consultați https://github.com/sudodus/tarballs sau dacă utilizați mkusb: actualizați prin `ppa:mkusb/unstable` la versiunea 12.7.2. Dacă/când aveți timp, vă rugăm să verificați dacă găsiți o comandă problematică pe care încă nu am identificat-o și remediată.
bac0n avatar
drapel cn
sigur ..........

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.