Ako získať veľkosť adresára v systéme Linux

How Get Size Directory Linux



Poznať veľkosť adresára v systéme Linux nie je také jednoduché, ako to znie. Príkaz ls -s zobrazí zoznam súborov a podadresárov s ich veľkosťami. Veľkosti (asi 4096 bajtov) uvedené pre adresáre však nevyužívajú disk. Veľkosť viditeľná pre adresár je veľkosť metadát adresára.

Metadáta sú údaje o dátach. Zjavná veľkosť je veľkosť údajov, ktorá je pre bežného používateľa počítača dôležitá. Zjavnú veľkosť predstavuje obsah (text) používateľových listov, obrázkov, videí atď. Tieto údaje nie sú uložené svojvoľne v počítači. Údaje zdanlivej veľkosti sa musia uchovávať kontrolným spôsobom. Musí byť identifikovateľný. Musí byť kompletný. Existujú na to ďalšie požiadavky. Na splnenie týchto dodatočných požiadaviek sú potrebné ďalšie údaje a tieto dodatočné údaje sú metaúdaje.







Pamätajte si, že vo zväzku je iba jeden adresár. Ostatné sú podadresáre. Z koreňového adresára vznikajú podadresáre, ktoré vedú k zániku ďalších podadresárov. Podadresáre sa však zvyčajne jednoducho nazývajú adresáre. A tak existuje iba jeden strom adresárov.



Ls -s teda nie je užitočné na získanie veľkosti adresára. Ktorý príkaz je potom užitočný? - Príkaz du. znamená skratka používanie disku. Vytlačí využitie disku v adresári.



Tento článok vysvetľuje rôzne funkcie príkazu du v systéme Linux, ktorý poskytuje rôznym spôsobom programátora poznanie veľkostí adresárov a ich podadresárov. Bash je shell používaný pre ukážky kódu v tomto článku.





Obsah článku

du bez možnosti alebo argumentu

Aktuálny pracovný adresár je adresár, v ktorom používateľ aktuálne pracuje. Výzva obvykle zobrazuje aktuálny pracovný adresár. Písanie bez akejkoľvek možnosti a argumentu:



z

a potom stlačením klávesu Enter sa zobrazí využitie disku pre všetky podadresáre aktuálneho pracovného adresára. Zobrazí tieto informácie pre sub-strom aktuálneho pracovného adresára. Bodka na displeji predstavuje aktuálny pracovný adresár.

Každá cesta sub-stromu je zobrazená v riadku. Každý riadok začína veľkosťou adresára (čo je priezvisko v ceste). Displej môže byť nasledovný:

8./dir1/dir2/dir3/dir4

12./dir1/dir2/dir3

16./dir1/dir2

dvadsať./dir1

Všimnite si toho, že nie je jasné, či je veľkosť v bajtoch alebo kilobajtoch alebo megabajtoch alebo gigabajtoch. Kilobajty symbolu, K znamená 1024 bajtov; Megabajty symbolu, M znamená 1 048 576 bajtov; Gigabajty symbolu, G znamená 1 073 741 824 bajtov. Aby sa uvádzali násobky, mala by sa použiť možnosť -h (prepínač) takto:

z -h

Displej by potom vyzeral takto:

8,0 tis./dir1/dir2/dir3/dir4

12 tis./dir1/dir2/dir3

16K./dir1/dir2

20 tis./dir1

Keď sa používa možnosť -h, veľkosti sú údajne v čitateľnej forme.

Poznámka: pri voľbe –all príkaz du tiež poskytne využitie disku pre súbory; v tomto článku sa však nebudeme zaoberať využitím disku pre súbory.

Veľkosť ostatných adresárov

Typická absolútna cesta pre zväzok Linuxu je nasledovná:

/Domov/john/povedať/dirTwo/dirTri/dirFour

Prvý / je koreňový adresár. Tento adresár má bezprostredné podadresáre vrátane domovského adresára. Domovský adresár má adresár používateľa. Ak sa užívateľ volá John, môže pomenovať užívateľský adresár john. Adresár používateľa je označený ~. Užívateľ teda môže použiť príkaz cd ~ na dosiahnutie svojho adresára z ľubovoľného adresára. dirOne je adresár vytvorený užívateľom. Užívateľ môže na tejto úrovni vytvárať aj ďalšie adresáre. dirTwo, dirThree a dirFour sú podadresáre k predchádzajúcim adresárom, ktoré vytvoril používateľ.

Užívateľ môže poznať veľkosť akéhokoľvek iného adresára a jeho podadresárov (pod-strom) z akéhokoľvek adresára, pričom ako argument obchádza absolútnu cestu. Ak je napríklad potrebné využitie disku,

/Domov/john/povedať/dirTwo

potom príkaz bude:

z -h /Domov/john/povedať/dirTwo

alebo

z -h~/povedať/dirTwo

kde ~ predstavuje adresár používateľa.

Ak chcete použiť relatívnu cestu, používateľ už musí byť v zodpovedajúcom nadradenom adresári. Ak sa napríklad zobrazí výzva,

john@hostiteľ: ~/povedzme $

čo znamená, že používateľ je v adresári/home/john/dirOne, potom nasledujúci príkaz poskytne rovnaký výsledok ako vyššie uvedený príkaz:

z -hdirTwo

Cesty by boli stále relatívne. Ak chcete zobraziť rovnaké informácie pre aktuálny adresár, nepoužívajte žiadny argument alebo bodku.

Túto schému je možné použiť na získanie veľkosti iba jedného adresára, posledného v ceste (pred ktorým je cesta). Uprostred cesty je možné získať veľkosť adresára - pozri nižšie položku exclude = PATTERN.

Úhrn

Je možné vyrobiť veľkú celkovú veľkosť všetkých príslušných adresárov. Pre vyššie uvedenú situáciu by príkaz bol:

z -h --Celkom

zdanlivá veľkosť

Zjavná veľkosť je zvyčajne menšia ako využitie disku. V niektorých situáciách je však zdanlivá veľkosť väčšia ako využitie disku; dôvod - pozri neskôr. Príkaz na získanie zdanlivých veľkostí pre relatívnu cestu uvedenú vyššie bude:

z -h -veľkosť zjavnéhodirTwo

Maximálna hĺbka

S –max-depth = 0, du vytlačí veľkosť iba aktuálneho pracovného adresára; s du –max-depth = 1, du vytlačí veľkosť aktuálneho pracovného adresára a veľkosti všetkých jeho podadresárov prvej úrovne; s –max-depth = 2, du vytlačí veľkosť aktuálneho pracovného adresára a veľkosti všetkých jeho podadresárov prvej úrovne a všetkých jeho podadresárov druhej úrovne; s –max-depth = 3, du vytlačí veľkosť aktuálneho pracovného adresára a všetky jeho podadresáre na prvej úrovni a všetky jeho podadresáre na druhej úrovni a všetky jeho podadresáre na tretej úrovni; to pokračuje so zvyšujúcou sa hodnotou maximálnej hĺbky. Príkladom jeho použitia je:

z -h --max. hĺbka=2

Príkaz sudo

Jeden z adresárov s vlastnými podadresármi v koreňovom adresári je var. Ak používateľ zadá

z -h /kde

a stlačí Enter, uvedomí si, že pre niektoré adresáre je odmietnuté povolenie. To znamená, že nemôže poznať veľkosti niektorých adresárov. Povolenie je odmietnuté, pretože používateľ nie je superužívateľom. Superužívateľ má právo vidieť veľkosti (využitie disku) týchto adresárov. Aby používateľ získal toto oprávnenie, musí použiť príkaz sudo nasledovne:

sudo z -h /kde

Ak shell požiada používateľa o heslo, musí ho zadať a stlačiť kláves Enter. Pomocou príkazu sudo môže bežný používateľ (programátor) vidieť veľkosti všetkých adresárov v adresári var a podobných adresároch.

Vylúčenie záznamov podľa veľkosti

Voľba –threshold = SIZE neumožní výpis adresárov, ktorých veľkosti sú menšie ako SIZE. Na cestu,

/Domov/john/povedať/dirTwo/dirTri/dirFour

s výzvou na[chránené e -mailom]: ~ $, potom

z -h --prah= 12K dirOne

kde 12 kB znamená 12 kilobajtov, nezobrazí riadok pre žiadny adresár, ktorého využitie disku je menšie ako 12 kB.

–Exclude = VZOR

Táto možnosť a hodnota môžu vynechať riadky adresára, ktoré používateľ v zozname nechce.

Ak chcete vynechať riadok pre posledný adresár, dirFour cesty

/Domov/john/povedať/dirTwo/dirTri/dirFour

príkaz by mal byť:

z -h -vylúčiť= povedz/dirTwo/dirTri/dirFour dirOne

Výsledkom bude niečo ako,

4,0 tis. DirOne/dirTwo/dirTri

8,0 tis. DirOne/dirTwo

12K dirOne

Poznámka: veľkosti nezahŕňali veľkosť adresára poslednej úrovne (dirFour) cesty.

Ak chcete mať iba veľkosti horných adresárov hĺbky a ich podstromov, v tejto možnosti nemáte k dispozícii adresáre spodnej hĺbky. Takže príkazom,

z -h -vylúčiť= povedz/dirTwo/dirTri dirOne

výstup bude niečo ako,

4,0 tis. DirOne/dirTwo

8K dirOne

Poznámka: Veľkosti vylúčili veľkosti adresárov spodnej páky stromu.

Znova zvážte absolútny odkaz,

/Domov/john/povedať/dirTwo/dirTri/dirFour

Nasledujúci príkaz zaistí využitie disku iba v adresári dirTwo, ktorý je adresárom v rámci cesty. Príkaz je:

z -h -vylúčiť=/Domov/john/povedať/dirTwo/ * /Domov/john/povedať/dirTwo

Argument má všetky predchádzajúce adresáre až na príslušný. Hodnota vylúčenia má všetky predchádzajúce adresáre končiace znakom *, bezprostredne za príslušným. * znamená všetky podadresáre na danej úrovni (a ich pod stromy). Výsledkom bude niečo ako,

5,0 tis/Domov/john/povedať/dirTwo

Záver

Pokúšať sa zistiť veľkosť adresára pomocou príkazu ls -s je zavádzajúce. S ním sa získajú iba metaúdaje adresára. Ak chcete poznať využitie disku v adresári, použite príkaz du. Pri použití s ​​voľbou -h sú veľkosti adresárov čitateľné. Zjavnú veľkosť je možné získať pomocou možnosti zdanlivej veľkosti. Bez akejkoľvek možnosti a argumentu príkaz du iba zobrazí veľkosti všetkých podadresárov aktuálneho adresára vrátane veľkosti aktuálneho adresára. Argumentom du je cesta, ktorá môže začínať od koreňa. Možnosti a niektoré z ich hodnôt presne rozhodujú, ktoré adresáre sú adresované. Príkaz sudo štandardne poskytuje bežnému používateľovi práva superužívateľa.