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
- Velikost ostatních adresářů
- zdánlivá velikost
- Příkaz sudo
- Vyloučení položek podle velikosti
- exclude = VZOR
- Závěr
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/dir412./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 -hDisplej by pak vypadal takto:
8,0 tis./dir1/dir2/dir3/dir412 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/dirFourPrvní / 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/dirTwopak by příkaz byl:
z -h /Domov/John/říci/dirTwonebo
z -h~/říci/dirTwokde ~ 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 -hdirTwoCesty 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ídirTwoMaximá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=2Příkaz sudo
Jeden z adresářů s vlastními podadresáři v kořenovém adresáři je var. Pokud uživatel zadá
z -h /kdea 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 /kdePokud 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/dirFours výzvou na[chráněno emailem]: ~ $, pak
z -h --práh= 12K dirOnekde 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/dirFourpříkaz by měl být:
z -h --vyloučit= řekni/dirTwo/dirThree/dirFour dirOneVýsledkem bude něco jako,
4,0 tis. DirOne/dirTwo/dirThree8,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 dirOnevý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/dirFourNá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/dirTwoArgument 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/dirTwoZá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.