Jak získat velikost adresáře v Linuxu

How Get Size Directory Linux



Znát velikost adresáře v Linuxu není tak jednoduché, jak to zní. Příkaz ls -s zobrazí seznam souborů a podadresářů s jejich velikostmi. Velikosti (asi 4096 bajtů) uvedené pro adresáře však nevyužívají disk. Velikost viděná pro adresář je velikost metadat adresáře.

Metadata jsou data o datech. Zdánlivá velikost je velikost dat, která je pro běžného uživatele počítače důležitá. Obsah (text) uživatelských dopisů, obrázků, videí atd. Představuje zdánlivou velikost. Tato data nejsou uložena libovolně v počítači. Data zdánlivé velikosti musí být uchovávána kontrolním způsobem. Musí být identifikovatelné. Musí být kompletní. Jsou na to kladeny další požadavky. K dosažení těchto zvláštních požadavků jsou zapotřebí další data a tato další data jsou metadata.







Pamatujte, že ve svazku je pouze jeden adresář. Zbytek jsou podadresáře. Z kořenového adresáře vzniknou podadresáře, které způsobí pád dalších podadresářů. Podadresářům se však obvykle jednoduše říká adresáře. A tak existuje pouze jeden adresářový strom.



Ls -s tedy není užitečné pro získání velikosti adresáře. Který příkaz je tedy užitečný? - Příkaz du. zkratka pro Disk Usage. Vytiskne využití disku v adresáři.



Tento článek vysvětluje různé funkce příkazu du v Linuxu, který poskytuje různé způsoby programátoru, jak zjistit velikosti adresářů a jejich podadresářů. Bash je prostředí používané pro ukázky kódu v tomto článku.





Obsah článku

du bez opce nebo argumentu

Aktuální pracovní adresář je adresář, ve kterém uživatel aktuálně pracuje. Výzva obvykle zobrazuje aktuální pracovní adresář. Psaní bez jakékoli možnosti a argumentu:



z

a poté stisknutím klávesy Enter se zobrazí využití disku pro všechny podadresáře aktuálního pracovního adresáře. Zobrazí tyto informace pro sub-strom aktuálního pracovního adresáře. Tečka na displeji představuje aktuální pracovní adresář.

Každá cesta dílčího stromu je na displeji znázorněna v řádku. Každý řádek začíná velikostí adresáře (což je příjmení v cestě). Zobrazení může být něco jako:

8./dir1/dir2/dir3/dir4

12./dir1/dir2/dir3

16./dir1/dir2

dvacet./dir1

Všimněte si, že není jasné, zda je velikost v bajtech nebo kilobajtech nebo megabajtech nebo gigabajtech. Kilobajty symbolu, K znamená 1024 bytů; Megabajty symbolu, M znamená 1 048 576 bytů; Gigabajty symbolu, G znamená 1 073 741 824 bajtů. Aby byly indikovány násobky, měla by být použita volba -h (přepínač) následovně:

z -h

Displej by pak vypadal takto:

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

12 tis./dir1/dir2/dir3

16 tis./dir1/dir2

20 tis./dir1

Když je použita volba -h, velikosti jsou prý ve čitelné podobě.

Poznámka: s volbou –all dá příkaz du také využití disku pro soubory; využití disku pro soubory však nebude v tomto článku řešeno.

Velikost ostatních adresářů

Typická absolutní cesta pro svazek Linuxu je následující:

/Domov/John/říci/dirTwo/dirThree/dirFour

První / je kořenový adresář. Tento adresář má bezprostřední podadresáře, včetně domovského adresáře. Domovský adresář obsahuje adresář uživatele. Pokud se uživatel jmenuje John, pak může pojmenovat adresář uživatele, john. Adresář uživatele je identifikován znakem ~. Uživatel tedy může použít příkaz cd ~ k dosažení svého adresáře z libovolného adresáře. dirOne je adresář vytvořený uživatelem. Uživatel může na této úrovni také vytvářet další adresáře. dirTwo, dirThree a dirFour jsou podadresáře jejich předchozích adresářů vytvořených uživatelem.

Uživatel může znát velikost jakéhokoli jiného adresáře a jeho podadresářů (sub-strom) z libovolného adresáře, přičemž jako argument vynechá absolutní cestu. Pokud je například zapotřebí využití disku,

/Domov/John/říci/dirTwo

pak by příkaz byl:

z -h /Domov/John/říci/dirTwo

nebo

z -h~/říci/dirTwo

kde ~ představuje adresář uživatele.

Chcete -li použít relativní cestu, musí být uživatel již v odpovídajícím nadřazeném adresáři. Pokud se například zobrazí výzva,

John@hostitel: ~/řekněme $

což znamená, že uživatel je v adresáři/home/john/dirOne, pak následující příkaz poskytne stejný výsledek jako výše uvedený příkaz:

z -hdirTwo

Cesty by byly stále relativní. Chcete -li zobrazit stejné informace pro aktuální adresář, nepoužívejte žádný argument nebo použijte tečku.

Toto schéma lze použít k získání velikosti pouze jednoho adresáře, posledního v cestě (předchází cesta). Je možné získat velikost adresáře uprostřed cesty - viz exclude = PATTERN níže.

Celkový součet

Lze vyrobit velkou celkovou velikost všech příslušných adresářů. Pro výše uvedenou situaci by příkaz byl:

z -h --celkový

zdánlivá velikost

Zdánlivá velikost je obvykle menší než využití disku. V některých situacích je však zdánlivá velikost větší než využití disku; důvod - viz později. Příkaz k získání zdánlivých velikostí pro relativní cestu výše by byl:

z -h -velikost zdánídirTwo

Maximální hloubka

Pokud –max-depth = 0, du vytiskne velikost pouze aktuálního pracovního adresáře; s du –max-depth = 1, du vytiskne velikost aktuálního pracovního adresáře a velikosti všech jeho podadresářů první úrovně; s –max-depth = 2, du vytiskne velikost aktuálního pracovního adresáře a velikosti všech jeho podadresářů první úrovně a všech jeho podadresářů druhé úrovně; s –max-depth = 3, du vytiskne velikost aktuálního pracovního adresáře a všech jeho podadresářů první úrovně a všech jeho podadresářů druhé úrovně a všech jeho podadresářů třetí úrovně; to pokračuje s rostoucí hodnotou maximální hloubky. Příkladem jeho použití je:

z -h --max-hloubka=2

Příkaz sudo

Jeden z adresářů s vlastními podadresáři v kořenovém adresáři je var. Pokud uživatel zadá

z -h /kde

a stiskne Enter, uvědomí si, že u některých adresářů je povolení odepřeno. To znamená, že nemůže znát velikosti některých adresářů. Oprávnění je odepřeno, protože uživatel není superuživatel. Superuživatel má oprávnění vidět velikosti (využití disku) těchto adresářů. Aby tedy uživatel toto oprávnění získal, musí použít příkaz sudo následujícím způsobem:

sudo z -h /kde

Pokud shell požádá uživatele o jeho heslo, musí jej zadat a stisknout Enter. Pomocí příkazu sudo může běžný uživatel (programátor) vidět velikosti všech adresářů v adresáři var a podobných adresářích.

Vyloučení položek podle velikosti

Možnost –threshold = SIZE nepovolí výpis adresářů, jejichž velikosti jsou menší než SIZE. Pro cestu,

/Domov/John/říci/dirTwo/dirThree/dirFour

s výzvou na[chráněno emailem]: ~ $, pak

z -h --práh= 12K dirOne

kde 12 kB znamená 12 kilobajtů, nezobrazí řádek pro žádný adresář, jehož využití disku je menší než 12 kB.

–Exclude = VZOR

Tato možnost a hodnota mohou vynechat řádky adresáře, které uživatel v seznamu nechce.

Chcete -li vynechat řádek pro poslední adresář, dirFour cesty

/Domov/John/říci/dirTwo/dirThree/dirFour

příkaz by měl být:

z -h --vyloučit= řekni/dirTwo/dirThree/dirFour dirOne

Výsledkem bude něco jako,

4,0 tis. DirOne/dirTwo/dirThree

8,0 tis. DirOne/dirTwo

12K dirOne

Poznámka: velikosti nezahrnovaly velikost adresáře poslední úrovně (dirFour) cesty.

Chcete-li mít pouze velikosti adresářů horní hloubky a jejich podřízených stromů, v této možnosti nemáte adresáře dolní hloubky. Takže s příkazem,

z -h --vyloučit= řekni/dirTwo/dirThree dirOne

výstup bude něco jako,

4,0 tis. DirOne/dirTwo

8K dirOne

Poznámka: velikosti vyloučily velikosti adresářů spodní páky stromu.

Znovu zvažte absolutní odkaz,

/Domov/John/říci/dirTwo/dirThree/dirFour

Následující příkaz získá využití disku pouze v adresáři dirTwo, což je adresář v rámci cesty. Příkaz je:

z -h --vyloučit=/Domov/John/říci/dirTwo/ * /Domov/John/říci/dirTwo

Argument má všechny předchozí adresáře až na ten dotyčný. Hodnota vyloučení má všechny předchozí adresáře, končící *, hned za dotyčným. * znamená všechny podadresáře na této úrovni (a jejich podřízené stromy). Výsledkem bude něco jako,

5,0 tis/Domov/John/říci/dirTwo

Závěr

Pokoušet se zjistit velikost adresáře pomocí příkazu ls -s je zavádějící. S ním jsou získávána pouze metadata adresáře. Chcete -li znát využití disku v adresáři, použijte příkaz du. Při použití s ​​volbou -h jsou velikosti adresářů čitelné. Zdánlivou velikost lze získat pomocí možnosti zdánlivé velikosti. Bez jakékoli možnosti a argumentu příkaz du pouze zobrazí velikosti všech podadresářů aktuálního adresáře, včetně aktuálního adresáře. Argumentem du je cesta, která může začínat od kořene. Možnosti a některé z jejich hodnot rozhodují přesně, které adresáře jsou adresovány. Příkaz sudo ve výchozím nastavení poskytuje běžnému uživateli oprávnění superuživatele.