Cum pentru a Obține Dimensiuni de Fișier sau Director în Linux

  • Dave McKay

    @TheGurkha

  • 19 decembrie 2019, 8:00 EDT
Fatmawati Achmad Zaenuri/

atunci Când utilizați Linux du comandă, veți obține atât reale de utilizare disc și adevărata mărime a unui fișier sau director. Vom explica de ce aceste valori nu sunt aceleași.

utilizarea efectivă a discului și dimensiunea reală

dimensiunea unui fișier și spațiul pe care îl ocupă pe hard disk sunt rareori aceleași., Spațiul pe disc este alocat în blocuri. Dacă un fișier este mai mic decât un bloc, un întreg bloc este încă alocat acestuia, deoarece sistemul de fișiere nu are o unitate mai mică de bunuri imobiliare de utilizat.

cu excepția cazului în care dimensiunea unui fișier este un multiplu exact de blocuri, spațiul pe care îl folosește pe hard disk trebuie să fie întotdeauna rotunjit la următorul bloc întreg. De exemplu, dacă un fișier este mai mare de două blocuri, dar mai mic de trei, este nevoie de încă trei blocuri de spațiu pentru a-l stoca.

publicitate

două măsurători sunt utilizate în raport cu Dimensiunea fișierului., Primul este dimensiunea reală a fișierului, care este numărul de octeți de conținut care alcătuiesc fișierul. Al doilea este dimensiunea efectivă a fișierului de pe hard disk. Acesta este numărul de blocuri de sistem de fișiere necesare pentru a stoca acel fișier.

un exemplu

să ne uităm la un exemplu simplu., Vom redirecționa un singur caracter într-un fișier pentru a crea un mic fișier:

echo "1" > geek.txt

Acum, vom folosi mult timp format listă, ls, să se uite la lungimea de fișier:

ls -l geek.txt

lungimea este valoarea numerică care urmează dave dave intrări, care este de doi octeți. De ce sunt doi octeți când am trimis un singur caracter în fișier? Să aruncăm o privire la ceea ce se întâmplă în interiorul fișierului.,

Publicitate

Vom folosi hexdump comandă, care ne va da exact numărul de octet și ne permite să „vedem” caractere non-imprimare ca valori hexazecimale. De asemenea, vom folosi -C (canonice) opțiunea de a forța ieșirea pentru a arăta valori hexazecimale în corpul de ieșire, precum și caracter alfanumeric echivalente:

hexdump -C geek.txt

rezultatul ne arată că, începând de la offset 00000000 în dosar, există un octet care conține o valoare hexazecimală de 31 de ani, și unul care conține o valoare hexazecimală a 0A., Porțiunea din dreapta a ieșirii descrie aceste valori ca caractere alfanumerice, ori de câte ori este posibil.valoarea hexazecimală a lui 31 este utilizată pentru a reprezenta cifra unu. Valoarea hexazecimală a 0A este utilizată pentru a reprezenta caracterul de alimentare a liniei, care nu poate fi afișat ca un caracter alfanumeric, deci este afișat ca o perioadă (.) în schimb. Caracterul liniei de alimentare este adăugat de echo. În mod implicit, echo începe o nouă linie după ce afișează textul pe care trebuie să-l scrie în fereastra terminalului.,

care se potrivește cu ieșirea din ls și este de acord cu lungimea fișierului de doi octeți.

LEGATE de: Modul de Utilizare a Comanda ls pentru a Lista Fișierele și Directoarele de pe Linux

Publicitate

Acum, vom folosi du comandă să se uite la dimensiunea fișierului:

du geek.txt

Se spune că dimensiunea este de patru, dar patru de ce?

există blocuri și apoi există blocuri

cânddu raportează dimensiunile fișierelor în blocuri, dimensiunea pe care o folosește depinde de mai mulți factori., Puteți specifica dimensiunea blocului pe care ar trebui să o utilizeze pe linia de comandă. Dacă nu forțați du să utilizeze o anumită dimensiune a blocului, urmează un set de reguli pentru a decide pe care să o utilizați.

în Primul rând, se verifică următoarele variabile de mediu:

  • DU_BLOCK_SIZE
  • BLOCK_SIZE
  • BLOCKSIZE

Dacă oricare dintre acestea există, dimensiunea blocului este stabilit, și du stații de verificare. Dacă niciunul nu este setat, du implicit la o dimensiune a blocului de 1,024 octeți., Cu excepția cazului în care este setată o variabilă de mediu numită POSIXLY_CORRECT. Dacă acesta este cazul, du implicit la o dimensiune a blocului de 512 octeți.deci, cum aflăm care este în uz? Puteți verifica fiecare variabilă de mediu pentru a o rezolva, dar există o cale mai rapidă. Să comparăm rezultatele cu dimensiunea blocului pe care sistemul de fișiere îl folosește în schimb.pentru a descoperi dimensiunea blocului utilizat de sistemul de fișiere, vom folosi programul tune2fs., Apoi, vom folosi -l (lista superblock) opțiune, conducta de ieșire prin grep, și apoi imprima liniile care conțin cuvântul „Bloc.”

În acest exemplu, vom uita-te la sistemul de fișiere de pe prima partitie de pe primul hard disk, sda1, iar noi va trebui să utilizați sudo:

sudo tune2fs -l /dev/sda1 | grep Block

sistemul De fișiere dimensiunea blocului este de 4096 de octeți. Dacă vom împărți că, prin urmare am primit de la du (patru), se arată du implicit dimensiunea blocului este de 1024 de octeți., Acum știm câteva lucruri importante.în primul rând, știm că cea mai mică cantitate de sistem de fișiere imobiliare care poate fi dedicată stocării unui fișier este de 4.096 octeți. Aceasta înseamnă că chiar și fișierul nostru mic, de doi octeți, ocupă 4 KB de spațiu pe hard disk.

Al doilea lucru de a păstra în minte este de aplicații dedicate pentru raportarea pe hard disk și sistemul de fișiere statistici, cum ar fi du, ls și tune2fs, pot avea diferite noțiuni de ce „bloc” înseamnă., tune2fs rapoarte de aplicare adevărat sistem de fișiere de dimensiuni de bloc, în timp ce ls și du poate fi configurat sau obligați să utilizeze alte dimensiuni bloc. Aceste dimensiuni de bloc nu sunt destinate să se refere la dimensiunea blocului sistemului de fișiere; sunt doar „bucăți” pe care aceste comenzi le folosesc în ieșirea lor.

în cele din Urmă, altele decât folosind diferite dimensiuni de bloc, răspunsurile la du și tune2fs transmită aceeași semnificație., tune2fs rezultatul a fost un bloc de 4096 bytes, iar du rezultatul a fost de patru blocuri de 1024 de octeți.

folosind du

fără parametri sau opțiuni de linie de comandă, du listează spațiul total pe disc pe care îl utilizează directorul curent și toate subdirectoarele.

Să aruncăm o privire la un exemplu:

du
publicitate

dimensiunea este raportată în dimensiunea implicită a blocului de 1.024 octeți pe bloc. Întregul arbore subdirector este traversat.,

Utilizarea du pe-un Director Diferit

Dacă doriți du la raport pe un alt director decât cel actual, puteți trece calea către directorul în linia de comandă:

du ~/.cach/evolution/

Utilizarea du pe un Anumit Fișier

Dacă doriți du să prezinte un raport privind un anumit fișier, trece calea către acel fișier în linia de comandă., Puteți trece, de asemenea, un model shell pentru a o selecta un grup de fișiere, cum ar fi *.txt:

du ~/.bash_aliases

de Raportare pe Fișiere în Directoare

Pentru a avea du raport cu privire la fișierele din directorul curent si subdirectoarele, utilizați -a (toate fișierele) opțiune:

du -a
Publicitate

Pentru fiecare director, dimensiunea fiecărui fișier este raportat, precum și un total pentru fiecare director.,

limitarea adâncimii arborelui de directoare

puteți spune du pentru a lista arborele de directoare la o anumită adâncime. Pentru a face acest lucru, utilizați opțiunea -d (adâncime maximă) și furnizați o valoare de adâncime ca parametru. Rețineți că toate subdirectoarele sunt scanate și utilizate pentru a calcula totalurile raportate, dar nu toate sunt listate. Pentru a seta o adâncime maximă a directorului de un nivel, utilizați această comandă:

du -d 1

ieșirea listează dimensiunea totală a acelui subdirector în directorul curent și oferă, de asemenea, un total pentru fiecare.,pentru a lista directoarele cu un nivel mai profund, utilizați această comandă:

du -d 2

Setarea dimensiunii blocului

puteți utiliza opțiunea block pentru operația curentă.,d în cele mai adecvate bloc de dimensiune în funcție de spațiul de pe disc utilizat de directoare și fișiere, utilizați -h (lecturat) opțiune:

du -h

Pentru a vedea dimensiunea aparentă de fișier, mai degrabă decât cantitatea de spațiu pe hard disk utilizat pentru a stoca fișiere, utilizați --apparent-size opțiune:

du --apparent-size
Publicitate

puteți combina acest lucru cu -a (toate) opțiunea de a vedea dimensiunea aparentă a fiecărui fișier:

du --apparent-size -a

Fiecare fișier este afișat, împreună cu mărimea aparentă.,dacă doriți ca du să raportați doar totalul pentru director, utilizați opțiunea -s (rezumați)., De asemenea, puteți combina acest lucru cu alte opțiuni, cum ar fi -h (lecturat) opțiune:

du -h -s

Aici, ne vom folosi de ea cu --apparent-size opțiune:

du --apparent-size -s

Afișarea Ori Modificare

Pentru a vedea crearea sau ultimei modificări data și ora, utilizați --time opțiune:

du --time -d 2

Rezultate Ciudate?,

Dacă vedeți rezultate ciudate din du , mai ales atunci când te referi la dimensiuni, la ieșirea de la alte comenzi, este de obicei din cauza la diferite dimensiuni de bloc în care diferite comenzi poate fi setat sau cei care au implicit. De asemenea, s-ar putea datora diferențelor dintre dimensiunile reale ale fișierelor și spațiul pe disc necesar pentru a le stoca.

dacă trebuie să potriviți ieșirea altor comenzi, experimentați cu opțiunea --block din du.,Dave McKay Dave McKay a folosit pentru prima dată calculatoarele când banda de hârtie perforată era în vogă și de atunci programează. După peste 30 de ani în industria IT, acum este jurnalist tehnologic cu normă întreagă. În timpul carierei sale, a lucrat ca programator independent, manager al unei echipe internaționale de dezvoltare de software, manager de proiect pentru servicii IT și, cel mai recent, ca responsabil cu protecția datelor. Dave este un evanghelist Linux și avocat open source.Citeste tot Bio ”

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *