Jak Získat Velikost Souboru nebo Adresáře v Linuxu

  • Dave McKay

    @TheGurkha

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

Pokud používáte Linux du příkaz, můžete získat jak aktuální využití disku a velikost souboru nebo adresáře. Vysvětlíme, proč tyto hodnoty nejsou stejné.

skutečné využití disku a skutečná velikost

Velikost souboru a místo, které zabírá na pevném disku, jsou zřídka stejné., Místo na disku je přiděleno v blocích. Pokud je soubor menší než blok, je mu stále přidělen celý blok, protože souborový systém nemá k dispozici menší jednotku nemovitostí.

Pokud Velikost souboru není přesným násobkem bloků, musí být místo, které používá na pevném disku, vždy zaokrouhleno nahoru na další celý blok. Například, pokud je soubor větší než dva bloky, ale menší než tři, stále trvá tři bloky místa pro jeho uložení.

reklama

dvě měření se používají ve vztahu k velikosti souboru., První je skutečná velikost souboru, což je počet bajtů obsahu, které tvoří soubor. Druhým je efektivní Velikost souboru na pevném disku. Toto je počet bloků souborového systému potřebných k uložení tohoto souboru.

příklad

podívejme se na jednoduchý příklad., Budeme přesměrování jednoho znaku do souboru vytvořit malý soubor:

echo "1" > geek.txt

Nyní, použijeme dlouhý formát výpisu, ls, podívat se na délka souboru:

ls -l geek.txt

délka je číselná hodnota, která navazuje na dave dave položky, které je dva bajty. Proč jsou to dva bajty, když jsme do souboru poslali pouze jeden znak? Pojďme se podívat na to, co se děje uvnitř souboru.,

Reklama

použijeme hexdump příkaz, který nám dá přesný počet bajtů, a to nám umožní „vidět“ netisknutelných znaků jako hexadecimální hodnoty. Budeme také použít -C (kanonické) možnost vynutit výstupní zobrazit hexadecimální hodnoty v těle výstup, stejně jako jejich alfanumerický znak ekvivalenty:

hexdump -C geek.txt

výstup nám ukazuje, že, začátek v 00000000 posun v souboru, tam je byte, který obsahuje hexadecimální hodnotu 31, a ten, který obsahuje šestnáctkovou hodnotu 0A., Pravá část výstupu zobrazuje tyto hodnoty jako alfanumerické znaky, kdykoli je to možné.

hexadecimální hodnota 31 se používá k reprezentaci číslice. Hexadecimální hodnota 0A se používá k reprezentaci řádku Feed znak, který nemůže být zobrazen jako alfanumerický znak, takže je zobrazen jako období (.) místo. Řádek Feed znak se přidá echo . Ve výchozím nastavení echospustí nový řádek poté, co zobrazí text, který potřebuje zapsat do okna terminálu.,

to odpovídá výstupu z ls a souhlasí s délkou souboru dvou bajtů.

SOUVISEJÍCÍ: Jak Použít Příkazu ls vypsat Soubory a Adresáře na Linuxu

Reklama

Nyní, budeme používat du příkaz se podívat na velikost souboru:

du geek.txt

velikost je čtyři, ale čtyři, co?

existují bloky a pak jsou bloky

kdyždu hlásí velikosti souborů v blocích, velikost, kterou používá, závisí na několika faktorech., Na příkazovém řádku můžete určit, jakou velikost bloku má použít. Pokud nevynucujete du k použití určité velikosti bloku, je třeba rozhodnout, který z nich použije.

za Prvé, kontroluje následující proměnné prostředí:

  • DU_BLOCK_SIZE
  • BLOCK_SIZE
  • BLOCKSIZE

Pokud žádné z těchto existují, je velikost bloku nastavena, a du zastaví kontrola. Pokud žádné nejsou nastaveny, du výchozí hodnota je velikost bloku 1,024 bajtů., Pokud tedy není nastavena proměnná prostředí s názvem POSIXLY_CORRECT. Pokud tomu tak je, du výchozí hodnota na velikost bloku 512 bajtů.

reklama

Jak tedy zjistíme, který z nich se používá? Můžete zkontrolovat každou proměnnou prostředí, abyste ji vyřešili, ale existuje rychlejší způsob. Porovnejme výsledky s velikostí bloku, kterou systém souborů používá.

Chcete-li zjistit velikost bloku, kterou souborový systém používá, použijeme programtune2fs., Budeme pak použijte -l (seznamu superbloku) možnost, potrubí výstup do grep, a pak vytisknout řádky, které obsahují slovo „Blok.“

V tomto příkladu se podíváme na souborový systém na první oddíl prvního pevného disku, sda1, a budeme muset použít sudo:

sudo tune2fs -l /dev/sda1 | grep Block

souborový systém velikost bloku je 4096 bajtů. Pokud to vydělíme výsledkem, který jsme získali z du (čtyři), zobrazí du výchozí velikost bloku je 1,024 bajtů., Nyní víme několik důležitých věcí.

reklama

nejprve víme, že nejmenší množství nemovitostí souborového systému, které lze věnovat ukládání souboru, je 4,096 bajtů. To znamená, že i náš malý, dvoubajtový soubor zabírá 4 KB místa na pevném disku.

druhá věc, kterou musíte mít na paměti, je aplikace věnovaná zpráv na pevný disk a souborový systém statistiky, jako je du ls tune2fs, mohou mít různé představy o tom, co „blokovat“ znamená., tune2fs aplikace hlásí, pravda souborový systém velikost bloku, zatímco ls du může být nakonfigurován tak, nebo je nucen používat jiné velikosti bloku. Tyto velikosti bloků nejsou určeny k tomu, aby se vztahovaly k velikosti bloku souborového systému; jsou to jen“ kusy“, které tyto příkazy používají ve svém výstupu.

konečně, kromě použití různých velikostí bloků, odpovědi zdu atune2fs vyjadřují stejný význam., tune2fs výsledek byl jeden blok 4,096 bajtů adu výsledek byl čtyři bloky 1,024 bajtů.

Použití du

S žádné parametry příkazového řádku, nebo možnosti, du uvádí celkem disku, aktuální adresář a všechny podadresáře, které používáte.

podívejme se na příklad:

du

reklama

velikost je hlášena ve výchozí velikosti bloku 1,024 bajtů na blok. Celý podadresář je protažen.,

Použití du na Jiný Adresář

Pokud chcete du zpráva o jiného adresáře, než je aktuální, si můžete projít cestu do adresáře na příkazovém řádku:

du ~/.cach/evolution/

Použití du na Konkrétní Soubor

Pokud chcete du nahlásit na konkrétní soubor, projít cestu k tomu souboru na příkazovém řádku., Můžete také projít shell vzor k vyberte skupina souborů, jako je *.txt:

du ~/.bash_aliases

podávání Zpráv o Soubory v Adresářích

du zpráva o soubory v aktuálním adresáři a podadresářích pomocí -a (všechny soubory) možnost:

du -a
Reklama

Pro každý adresář, velikost každého souboru je oznámeno, stejně jako celkem pro každý adresář.,

omezení hloubky adresářového stromu

du seznam adresářového stromu do určité hloubky. K tomu použijte volbu -d (max depth) a jako parametr zadejte hodnotu hloubky. Všimněte si, že všechny podadresáře jsou skenovány a použity k výpočtu hlášených součtů, ale nejsou všechny uvedeny. Nastavit maximální adresář hloubku jednu úroveň, použijte tento příkaz:

du -d 1

výstup vypíše celkovou velikost tohoto podadresáře v aktuálním adresáři a také poskytuje celkem pro každou z nich.,

seznam adresáře o jednu úroveň hlouběji, použijte tento příkaz:

du -d 2

Nastavení Velikosti Bloku

můžete použít block možnost nastavit velikost bloku na du pro aktuální operaci.,d v nejvhodnější velikost bloku v závislosti na disku používané adresáře a soubory, použijte -h (human-readable) možnosti:

du -h

vidět zdánlivá velikost souboru, spíše než množství místa na disku používané pro ukládání souboru, použijte --apparent-size možnost:

du --apparent-size
Reklama

můžete kombinovat s -a (všechny), možnost vidět zdánlivá velikost každého souboru:

du --apparent-size -a

Každý soubor je uveden spolu s jeho zdánlivá velikost.,

zobrazení pouze součtů

Chcete-lidu nahlásit pouze součet adresáře, použijte volbu-s (shrnout)., Můžete také kombinovat s dalšími možnostmi, jako je například -h (human-readable) možnosti:

du -h -s

Tady, budeme používat --apparent-size možnost:

du --apparent-size -s

Zobrazuje Časy Modifikace

vytvoření nebo poslední modifikace datum a čas, použijte --time možnosti:

du --time -d 2

Podivné Výsledky?,

Pokud vidíte podivné výsledky z du , a to zejména při cross-referenční velikosti pro výstup z jiných příkazů, je to obvykle kvůli různé velikosti bloku na různých příkazů, které lze nastavit, nebo ty, na které se výchozí. Mohlo by to být také kvůli rozdílům mezi skutečnými velikostmi souborů a místem na disku potřebným k jejich uložení.

Pokud potřebujete odpovídat výstupu jiných příkazů, experimentujte s volbou --block v du.,

Dave McKay
Dave McKay poprvé použity počítače, když děrné děrné pásky bylo v módě, a on byl programovací od té doby. Po více než 30 letech v IT průmyslu je nyní technologickým novinářem na plný úvazek. Během své kariéry pracoval jako programátor na volné noze, manažer mezinárodní tým pro vývoj softwaru, IT služby, project manager, a, nejvíce nedávno, jako inspektora Ochrany Údajů. Dave je Linux evangelista a open source advokát.Přečtěte si celý Bio “

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *