Quando si elenca il contenuto di una directory usando ls
comando, potresti aver notato che la dimensione delle directory è quasi sempre di 4096 byte (4 KB). Questa è la dimensione dello spazio sul disco utilizzato per memorizzare le meta-informazioni per la directory, non ciò che contiene.
Il comando che vorrai utilizzare per ottenere la dimensione effettiva di una directory è du
, che è l'abbreviazione di "utilizzo del disco".
Come ottenere la dimensione di una directory #
Il du
Il comando visualizza la quantità di spazio file utilizzato dai file o dalle directory specificati. Se il percorso specificato è una directory, du
riassume l'utilizzo del disco di ciascuna sottodirectory in quella directory. Se non viene specificato alcun percorso, du
segnala l'utilizzo del disco della directory di lavoro corrente.
Quando viene invocato senza alcuna opzione, du
mostra l'utilizzo del disco della directory data e di ciascuna delle sue sottodirectory in byte.
In genere, si desidera visualizzare lo spazio occupato dalla directory in un formato leggibile dall'uomo. Ad esempio, per ottenere la dimensione totale di /var
directory, eseguiresti il seguente comando:
sudo du -sh /var
L'output sarà simile a questo:
85G /var
Spieghiamo il comando e i suoi argomenti:
- Il comando inizia con
sudo
perché la maggior parte dei file e delle directory all'interno di/var
directory sono di proprietà dell'utente root e non sono leggibili dagli utenti regolari. Se omettisudo
ildu
il comando stamperà "du:impossibile leggere la directory". s
- Visualizza solo la dimensione totale della directory specificata, non visualizzare i totali delle dimensioni dei file per le sottodirectory.h
- Stampa le dimensioni in un formato leggibile (h
)./var
- Il percorso della directory di cui vuoi ottenere la dimensione.
Cosa succede se si desidera visualizzare l'utilizzo del disco delle sottodirectory di primo livello? Hai due opzioni. Il primo consiste nell'utilizzare il simbolo dell'asterisco (*
) come mostrato di seguito, che significa "corrisponde a tutto ciò che non inizia con un punto (.
). )”. Il -c
l'opzione dice a du
per stampare un totale complessivo di tutte le dimensioni:
sudo du -shc /var/*
24K /var/db
4.0K /var/empty
4.0K /var/games
77G /var/lib
4.0K /var/local
0 /var/lock
3.3G /var/log
0 /var/mail
4.0K /var/opt
0 /var/run
196K /var/spool
28K /var/tmp
85G total
Un altro modo per ottenere un rapporto sull'utilizzo del disco delle sottodirectory di primo livello è utilizzare --max-depth
opzione:
sudo du -h --max-depth=1 /var
77G /var/lib
24K /var/db
4.0K /var/empty
4.0K /var/local
4.0K /var/opt
196K /var/spool
4.0K /var/games
3.3G /var/log
5.0G /var/cache
28K /var/tmp
85G /var
85G total
Per impostazione predefinita, il du
comando mostra lo spazio su disco utilizzato dalla directory o dal file. Per trovare la dimensione apparente di una directory, usa il --apparent-size
opzione. La "dimensione apparente" di un file è la quantità di dati effettivamente contenuta nel file.
sudo du -sh --apparent-size /var
Quando si trasferisce una directory tramite SCP, Rsync. o SFTP, la quantità di dati che viene trasferita sulla rete è la dimensione apparente dei file. Questo è il motivo per cui la dimensione dello spazio sul disco utilizzato sul sorgente quando visualizzato con du
(senza --apparent-size
) non è la stessa della dimensione sulla destinazione.
Il du
comando può essere combinato anche con altri comandi con pipe.
Ad esempio, per stampare le 5 directory più grandi all'interno di /var
directory, devi reindirizzare l'output di du
al sort
comando per ordinare le directory in base alla loro dimensione e quindi reindirizzare l'output al head
comando che stamperà solo le prime 5 directory:
sudo du -h /var/ | sort -rh | head -5
85G /var/
77G /var/lib
75G /var/lib/libvirt/images
75G /var/lib/libvirt
5.0G /var/cache/pacman/pkg
Conclusione #
In Linux, puoi ottenere la dimensione di una directory usando il du
comando.
Se hai domande o commenti, lascia un commento qui sotto.