Com obtenir la mida d’un fitxer o directori a Linux
Quan utilitzeu Linux du
, obteniu tant l’ús real del disc com la mida real d’un fitxer o directori. Explicarem per què aquests valors no són els mateixos.
Ús real del disc i mida real
La mida d’un fitxer i l’espai que ocupa al disc dur poques vegades són els mateixos. L’espai en disc s’assigna en blocs. Si un fitxer és més petit que un bloc, encara s’hi assigna un bloc sencer perquè el sistema de fitxers no té una unitat de béns immobles més petita per utilitzar.
A menys que la mida d’un fitxer sigui un múltiple exacte de blocs, l’espai que utilitza al disc dur sempre s’ha d’arrodonir al següent bloc sencer. Per exemple, si un fitxer és més gran de dos blocs però menor de tres, encara es necessiten tres blocs d’espai per emmagatzemar-lo.
S'utilitzen dues mesures en relació amb la mida del fitxer. El primer és la mida real del fitxer, que és el nombre de bytes de contingut que el formen. El segon és la mida efectiva del fitxer al disc dur. Aquest és el nombre de blocs del sistema de fitxers necessaris per emmagatzemar-lo.
Un exemple
Vegem un exemple senzill. Reorientarem un sol caràcter a un fitxer per crear un fitxer petit:
eco "1"> geek.txt
Ara farem servir la llista de format llarg,ls
, per veure la longitud del fitxer:
ls -l geek.txt
La longitud és el valor numèric que segueix a dave dave
entrades, que són dos bytes. Per què són dos bytes quan només hem enviat un caràcter al fitxer? Fem una ullada al que passa dins del fitxer.
Farem servir el descàrrega hexadecimal
, que ens donarà un recompte exacte de bytes i ens permetrà "veure" els caràcters que no s'imprimeixen com a valors hexadecimals. També utilitzarem el -C
opció (canònica) per forçar la sortida a mostrar valors hexadecimals al cos de la sortida, així com els seus equivalents de caràcters alfanumèrics:
hexdump -C geek.txt
La sortida ens mostra que, a partir del desplaçament 00000000 del fitxer, hi ha un byte que conté un valor hexadecimal de 31 i un que conté un valor hexadecimal de 0A. La part dreta de la sortida representa aquests valors com a caràcters alfanumèrics, sempre que sigui possible.
El valor hexadecimal de 31 s’utilitza per representar el dígit. El valor hexadecimal de 0A s’utilitza per representar el caràcter Feed de línia, que no es pot mostrar com a caràcter alfanumèric, de manera que es mostra com a punt (.). El caràcter Feed de línia s'afegeix amb ressò
. Per defecte,ressò
inicia una nova línia després de mostrar el text que necessita per escriure a la finestra del terminal.
Això comparteix amb la producció dels
i està d'acord amb la longitud del fitxer de dos bytes.
RELACIONATS:Com s'utilitza l'ordre ls per llistar fitxers i directoris a Linux
Ara farem servir el du
per veure la mida del fitxer:
du geek.txt
Diu que la mida és quatre, però quatre de què?
Hi ha blocs, i després hi ha blocs
Quan du
informa de mides de fitxers en blocs, la mida que utilitza depèn de diversos factors. Podeu especificar quina mida de bloc s’ha d’utilitzar a la línia d’ordres. Si no forçes du
per utilitzar una mida de bloc particular, segueix un conjunt de regles per decidir quina utilitzar.
En primer lloc, comprova les variables d'entorn següents:
- DU_BLOCK_SIZE
- BLOCK_SIZE
- BLOCKSIZE
Si n’hi ha algun, s’estableix la mida del bloc i du
deixa de comprovar. Si no n'hi ha cap,du
per defecte té una mida de bloc de 1.024 bytes. Llevat, és a dir, d'una variable d'entorn anomenada POSIXLY_CORRECT
està configurat. Si és així, du
per defecte té una mida de bloc de 512 bytes.
Llavors, com podem esbrinar quin s’utilitza? Podeu comprovar cada variable d’entorn per treballar-la, però hi ha una manera més ràpida. Comparem els resultats amb la mida de bloc que utilitza el sistema de fitxers.
Per descobrir la mida del bloc que fa servir el sistema de fitxers, utilitzarem el fitxer tune2fs
programa. A continuació, utilitzarem el -l
(llista de superilles), opteu per la sortida grep
i, a continuació, imprimiu línies que continguin la paraula "Bloqueja".
En aquest exemple, veurem el sistema de fitxers de la primera partició del primer disc dur, sda1
, i haurem de fer servir sudo
:
sudo tune2fs -l / dev / sda1 | grep Block
La mida del bloc del sistema de fitxers és de 4.096 bytes. Si ho dividim pel resultat que hem obtingut du
(quatre), mostra eldu
la mida de bloc per defecte és de 1.024 bytes. Ara sabem diverses coses importants.
En primer lloc, sabem que la quantitat mínima de béns arrels del sistema de fitxers que es pot dedicar a emmagatzemar un fitxer és de 4.096 bytes. Això significa que fins i tot el nostre petit fitxer de dos bytes ocupa 4 KB d’espai al disc dur.
El segon que cal tenir en compte són les aplicacions dedicades a la presentació d'informes sobre estadístiques del sistema de fitxers i discs durs, com du
, ls
, itune2fs
, pot tenir diferents nocions del que significa "bloquejar". El tune2fs
l'aplicació informa de mides de blocs del sistema de fitxers vertader, mentrels
i du
es pot configurar o obligar a utilitzar altres mides de blocs. Aquestes mides de blocs no estan pensades per relacionar-se amb la mida del bloc del sistema de fitxers; només són "trossos" que utilitzen aquestes ordres a la seva sortida.
Finalment, a part d’utilitzar diferents mides de blocs, les respostes de du
i tune2fs
transmeten el mateix significat. El tune2fs
el resultat va ser un bloc de 4.096 bytes i el fitxer du
el resultat va ser de quatre blocs de 1.024 bytes.
Utilitzant du
Sense paràmetres ni opcions de la línia d’ordres, du
llista l'espai total de disc que utilitza el directori actual i tots els subdirectoris.
Vegem un exemple:
du
La mida s’informa en la mida de bloc per defecte de 1.024 bytes per bloc. Es travessa tot l'arbre del subdirectori.
Utilitzant du
en un directori diferent
Si volsdu
per informar d'un directori diferent de l'actual, podeu passar el camí al directori de la línia d'ordres:
du ~ / .cach / evolution /
Utilitzant du
en un fitxer específic
Si volsdu
per informar sobre un fitxer específic, passeu el camí d'accés a aquest fitxer a la línia d'ordres. També podeu passar un patró de l'intèrpret d'ordres a un grup de fitxers seleccionat, com ara * .txt
:
du ~ / .bash_aliases
Informes sobre fitxers als directoris
Tenir du
informe sobre els fitxers del directori i subdirectoris actuals, utilitzeu el fitxer -a
opció (tots els fitxers):
du -a
Per a cada directori, s’informa de la mida de cada fitxer, així com d’un total per a cada directori.
Limitació de la profunditat de l'arbre de directoris
Ho saps du
per llistar l'arbre de directoris a una certa profunditat. Per fer-ho, utilitzeu el fitxer -d
(profunditat màxima) i proporcioneu un valor de profunditat com a paràmetre. Tingueu en compte que tots els subdirectoris s’escanegen i s’utilitzen per calcular els totals reportats, però no estan tots a la llista. Per establir una profunditat màxima d’un directori d’un nivell, utilitzeu aquesta ordre:
du -d 1
La sortida llista la mida total d'aquest subdirectori al directori actual i també proporciona un total per a cadascun.
Per llistar els directoris d'un nivell més profund, utilitzeu aquesta ordre:
du -d 2
Configuració de la mida del bloc
Podeu utilitzar el fitxer bloc
opció per definir una mida de bloc per a du
per a l'operació actual. Per utilitzar una mida de bloc d'un byte, utilitzeu l'ordre següent per obtenir les mides exactes dels directoris i fitxers:
du --block = 1
Si voleu utilitzar una mida de bloc d'un megabyte, podeu utilitzar el fitxer -m
(megabyte), que és la mateixa que --block = 1M
:
du -m
Si voleu que les mides es mostrin a la mida de bloc més adequada segons l'espai de disc utilitzat pels directoris i fitxers, utilitzeu el fitxer -h
opció (llegible per humans):
du -h
Per veure la mida aparent del fitxer en lloc de la quantitat d'espai del disc dur utilitzat per emmagatzemar-lo, utilitzeu el fitxer --de mida aparent
opció:
du --parent-size
Podeu combinar-ho amb el -a
(totes) opció per veure la mida aparent de cada fitxer:
du --parent-size -a
S'enumera cada fitxer, juntament amb la seva mida aparent.
Només es mostren els totals
Si volsdu
per informar només del total del directori, utilitzeu el fitxer -s
(resumir) opció. També podeu combinar-ho amb altres opcions, com ara -h
opció (llegible per humans):
du -h -s
Aquí l’utilitzarem amb --de mida aparent
opció:
du --parent-size -s
Visualització dels temps de modificació
Per veure la data i hora de creació o darrera modificació, utilitzeu el fitxer --temps
opció:
du --time -d 2
Resultats estranys?
Si veieu resultats estranys du
, especialment quan feu mides de referència creuades a la sortida d’altres ordres, generalment és degut a les diferents mides de blocs a les quals es poden configurar diferents ordres o a les que tenen per defecte. També podria ser degut a les diferències entre les mides reals de fitxers i l'espai en disc necessari per emmagatzemar-los.
Si heu de fer coincidir la sortida d'altres ordres, experimenteu amb el fitxer --bloc
opció a du
.