Lors de l'administration de systèmes Linux, je me trouve souvent aux prises avec le problème après la partition complète d'une partition. J'utilise normalement, du / | sort -nr
mais sur un système de fichiers volumineux, le retour des résultats prend beaucoup de temps.
En outre, cela permet généralement de mettre en évidence le pire délinquant, mais je me suis souvent retrouvé dans l'obligation de le faire du
sans les sort
cas les plus subtils, puis de traquer les résultats.
Je préférerais une solution de ligne de commande qui repose sur des commandes Linux standard, car je dois administrer de nombreux systèmes et installer un nouveau logiciel est une tâche fastidieuse (surtout quand l'espace disque est insuffisant!)
command-line
partition
disk-usage
command
Stephen Kitt
la source
la source
Réponses:
Essayez
ncdu
, un excellent analyseur d’utilisation des disques en ligne de commande:la source
sudo apt install ncdu
sur Ubuntu l'obtient facilement. C'est génialncdu -x
uniquement le nombre de fichiers et de répertoires sur le même système de fichiers que le répertoire en cours d'analyse.sudo ncdu -rx /
devrait donner une lecture propre sur les plus grands répertoires / fichiers UNIQUEMENT sur le lecteur de la zone racine. (-r
= en lecture seule,-x
= reste sur le même système de fichiers (ce qui signifie: ne traversez pas d'autres montages de système de fichiers))Ne va pas directement à
du /
. Utilisezdf
pour trouver la partition qui vous fait mal, puis essayez desdu
commandes.Celui que j'aime essayer est
parce qu'il imprime des tailles sous "forme lisible par l'homme". À moins que vous n'ayez de très petites partitions, la recherche de répertoires dans les gigaoctets est un très bon filtre pour ce que vous voulez. Cela vous prendra un certain temps, mais à moins que des quotas ne soient définis, je pense que ce sera comme ça.
Comme @jchavannes le souligne dans les commentaires, l'expression peut devenir plus précise si vous trouvez trop de faux positifs. J'ai intégré la suggestion, ce qui rend la chose meilleure, mais il y a toujours des faux positifs, donc il y a juste des compromis (expr plus simple, résultats pires; expr plus complexe et plus long, meilleurs résultats). Si vous avez trop de petits répertoires dans votre sortie, ajustez votre expression rationnelle en conséquence. Par exemple,
est encore plus précis (aucun répertoire <1 Go ne sera répertorié).
Si vous n'avez des quotas, vous pouvez utiliser
pour trouver les utilisateurs qui monopolisent le disque.
la source
grep '[0-9]G'
contenait beaucoup de faux positifs et omettait également les décimales. Cela a mieux fonctionné pour moi:sudo du -h / | grep -P '^[0-9\.]+G'
[GT]
au lieu d’être simplementG
du -h | sort -hr | head
Pour un premier aperçu, utilisez la vue «résumé» de
du
:L'effet consiste à imprimer la taille de chacun de ses arguments, c'est-à-dire chaque dossier racine dans le cas ci-dessus.
De plus, GNU
du
et BSDdu
peuvent être limités en profondeur ( mais POSIXdu
ne le peut pas! ):GNU (Linux,…):
BSD (macOS,…):
Cela limitera l'affichage de la sortie à la profondeur 3. Bien entendu, la taille calculée et affichée correspond au total de la profondeur totale. Malgré tout, la limitation de la profondeur d'affichage accélère considérablement le calcul.
Une autre option utile est
-h
(des mots à la fois sur GNU et BSD mais, encore une fois, pas sur POSIX uniquementdu
) pour une sortie «lisible par l'homme» (c'est-à-dire en utilisant KiB, MiB, etc. ).la source
du
plaint,-d
essayez--max-depth 5
plutôt.du -hcd 1 /directory
. -h pour être lisible par l'homme, c pour total et d pour profondeur.du -hd 1 <folder to inspect> | sort -hr | head
du --max-depth 5 -h /* 2>&1 | grep '[0-9\.]\+G' | sort -hr | head
filtrer Autorisation refuséeVous pouvez également exécuter la commande suivante en utilisant
du
:-s
option résume et affiche le total pour chaque argument.h
imprime Mio, Gio, etc.x
= rester dans un système de fichiers (très utile).P
= ne pas suivre les liens symboliques (ce qui pourrait entraîner le décompte des fichiers deux fois, par exemple).Attention, le
/root
répertoire ne sera pas affiché, vous devez courir~# du -Pshx /root 2>/dev/null
pour l'obtenir (une fois, j'ai eu beaucoup de mal à ne pas souligner que mon/root
répertoire était saturé).Edition: option corrigée -P
la source
du -Pshx .* * 2>/dev/null
+ répertoires cachés / systèmeTrouver les fichiers les plus volumineux sur le système de fichiers prendra toujours beaucoup de temps. Par définition, vous devez parcourir tout le système de fichiers à la recherche de gros fichiers. La seule solution est probablement d'exécuter une tâche cron sur tous vos systèmes pour que le fichier soit prêt à l'avance.
Une autre chose, l’option x de du est utile pour éviter que les points de montage ne suivent dans d’autres systèmes de fichiers. C'est à dire:
La commande complète que je lance habituellement est:
Les
-m
moyennes retournent les résultats en mégaoctets etsort -rn
trieront le plus grand nombre de résultats en premier. Vous pouvez ensuite ouvrir le fichier usage.txt dans un éditeur. Les dossiers les plus volumineux (commençant par /) se trouvent en haut.la source
-x
drapeau!ncdu
- du moins plus vite quedu
oufind
(en fonction de la profondeur et des arguments) ..sudo du -xm / | sort -rn > ~/usage.txt
J'utilise toujours
du -sm * | sort -n
, ce qui vous donne une liste triée de ce que les sous-répertoires du répertoire de travail actuel utilisent, en mebibytes.Vous pouvez également essayer Konqueror, qui a un mode "affichage de la taille", similaire à celui de WinDirStat sous Windows: il vous donne une représentation virtuelle des fichiers / répertoires qui occupent le plus d’espace.
Mise à jour: sur les versions les plus récentes, vous pouvez également utiliser une
du -sh * | sort -h
méthode permettant d'afficher les tailles de fichiers lisibles par l'homme et de les trier. (les numéros seront suffixés de K, M, G, ...)Pour ceux qui recherchent une alternative à la taille de fichier Konqueror de KDE3, jetez un œil à filelight, bien que ce ne soit pas aussi agréable.
la source
J'utilise ceci pour les 25 pires délinquants au-dessous du répertoire actuel
la source
-h
, cela va probablement changer l'effet de lasort -nr
commande - ce qui signifie que le tri ne fonctionnera plus, et ensuite lahead
commande ne fonctionnera plus non plusDans une entreprise précédente, nous avions un travail cron exécuté du jour au lendemain et identifié tous les fichiers dépassant une certaine taille, par exemple:
trouver / -taille + 10000k
Vous voudrez peut-être être plus sélectif quant aux répertoires que vous recherchez et faire attention aux lecteurs montés à distance qui pourraient être déconnectés.
la source
-x
option de recherche pour vous assurer de ne pas trouver de fichiers sur d'autres périphériques que le point de départ de votre commande de recherche. Cela corrige le problème des lecteurs montés à distance.Une option serait d'exécuter votre commande du / sort en tant que tâche cron et de la générer dans un fichier, afin qu'elle soit déjà disponible lorsque vous en avez besoin.
la source
Pour la ligne de commande, je pense que la méthode du / sort est la meilleure. Si vous n'êtes pas sur un serveur, vous devriez jeter un coup d'œil à l' analyseur d'utilisation Baobab - Disk . Ce programme prend également un certain temps à s'exécuter, mais vous pouvez facilement trouver le sous-répertoire au plus profond, là où se trouvent tous les anciens ISO de Linux.
la source
j'utilise
et je change la profondeur maximale en fonction de mes besoins. L'option "c" imprime les totaux des dossiers et l'option "h" imprime les tailles en K, M ou G selon le cas. Comme d'autres l'ont déjà dit, tous les répertoires sont numérisés, mais la sortie est limitée de manière à faciliter la recherche des grands répertoires.
la source
Je vais en second
xdiskusage
. Mais je vais ajouter dans la note qu’il s’agit en fait d’une interface et que l’on peut lire la sortie d’un fichier. Vous pouvez donc exécuterdu -ax /home > ~/home-du
lescp
fichier sur votre serveur, puis l’analyser graphiquement. Ou dirigez-le vers SSH.la source
Essayez d'alimenter la sortie de du dans un simple script awk qui vérifie si la taille du répertoire est supérieure à un seuil, si tel est le cas. Il n'est pas nécessaire d'attendre que l'arbre entier soit parcouru avant de commencer à obtenir des informations (par rapport à de nombreuses autres réponses).
Par exemple, ce qui suit affiche tous les répertoires consommant plus de 500 Mo environ.
Pour rendre les éléments ci-dessus un peu plus réutilisables, vous pouvez définir une fonction dans votre .bashrc (ou en faire un script autonome).
Alors,
dubig 200 ~/
dans le répertoire de base (sans suivre les liens symboliques hors périphérique), recherchez les répertoires qui utilisent plus de 200 Mo.la source
du -k
fera en sorte qu'il soit absolument certain que du utilise des unités KBdu -kx $2 | awk '$1>'$(($1*1024))
(si vous ne spécifiez qu'une condition, c'est-à-dire un motif à suivre, l'action par défaut estprint $0
)du -kx / | awk '$1 > 500000'
du -kx / | tee /tmp/du.log | awk '$1 > 500000'
. Ceci est très utile car si votre premier filtrage s’avère infructueux, vous pouvez essayer d’autres valeurs telles que celle-ciawk '$1 > 200000' /tmp/du.log
ou inspecter la sortie complète de cette manièresort -nr /tmp/du.log|less
sans réanalyser tout le système de fichiersJ'aime le bon vieux xdiskusage comme alternative graphique à du (1).
la source
Je préfère utiliser ce qui suit pour avoir une vue d'ensemble et explorer à partir de là ...
Cela affichera les résultats avec une sortie lisible par l’homme telle que Go, MB. Cela empêchera également de traverser des systèmes de fichiers distants. L'
-s
option affiche uniquement le résumé de chaque dossier trouvé afin que vous puissiez approfondir davantage si vous êtes intéressé par plus de détails sur un dossier. Gardez à l'esprit que cette solution ne montrera que les dossiers, vous voudrez donc omettre le / après l'astérisque si vous voulez aussi des fichiers.la source
Non mentionné ici, mais vous devriez également vérifier lsof en cas de fichiers supprimés / suspendus. J'ai eu un fichier tmp supprimé de 5,9 Go à partir d'un cronjob en fuite.
https://serverfault.com/questions/207100/how-can-i-find-phantom-storage-usage m'a aidé à trouver le propriétaire du processus dudit fichier (cron), puis j'ai pu obtenir
/proc/{cron id}/fd/{file handle #}
moins le fichier. question pour obtenir le début de la fuite, résolvez-le, puis echo ""> fichier pour libérer de l'espace et laissez cron se fermer gracieusement.la source
Depuis le terminal, vous pouvez obtenir une représentation visuelle de l'utilisation du disque avec dutree
Il est très rapide et léger car il est mis en œuvre dans Rust
Voir tous les détails d'utilisation sur le site
la source
Pour la ligne de commande du (et ses options) semble être le meilleur moyen. DiskHog semble utiliser les informations du / df d'un travail cron. La suggestion de Peter est donc probablement la meilleure combinaison de simplicité et d'efficacité.
( FileLight et KDirStat sont idéaux pour l'interface graphique.)
la source
Vous pouvez utiliser des outils standard tels que
find
etsort
pour analyser votre utilisation de l’espace disque.Répertoriez les répertoires triés par taille:
Liste des fichiers triés par leur taille:
la source
Il est peut-être intéressant de noter que
mc
(Midnight Commander, un gestionnaire de fichiers classique en mode texte) affiche par défaut uniquement la taille des inodes du répertoire (généralement4096
), mais avec CtrlSpaceou avec le menu Outils, vous pouvez voir l’espace occupé par le répertoire sélectionné dans une liste lisible par l’homme. format (par exemple, certains aiment103151M
).Par exemple, l'image ci-dessous montre la taille complète des distributions vanille de TeX Live de 2018 et 2017, tandis que les versions de 2015 et 2016 ne montrent que la taille de l'inode (mais elles ont vraiment près de 5 Go chacune).
C’est-à-dire qu’il CtrlSpacefaut le faire un à un, uniquement pour le niveau de répertoire réel, mais c’est tellement rapide et pratique lorsque vous naviguez avec
mc
cela que vous n’auriez peut-être pas besoin de le fairencdu
(cela n’est préférable que pour cela). Sinon, vous pouvez aussi courir àncdu
partir demc
. sans quittermc
ou lancer un autre terminal.la source
Au début, je vérifie la taille des répertoires, comme ceci:
la source
Si vous savez que les fichiers volumineux ont été ajoutés au cours des derniers jours (3, par exemple), vous pouvez utiliser une commande de recherche en conjonction avec "
ls -ltra
" pour découvrir les fichiers récemment ajoutés:Cela vous donnera juste les fichiers ("
-type f
"), pas les répertoires; juste les fichiers avec le temps de modification au cours des 3 derniers jours ("-mtime -3
") et exécutez "ls -lart
" sur chaque fichier trouvé ("-exec
" partie).la source
Pour comprendre l'utilisation disproportionnée de l'espace disque, il est souvent utile de commencer par le répertoire racine et de parcourir certains de ses plus gros enfants.
Nous pouvons le faire en
C'est:
maintenant, disons / usr semble trop grand
maintenant si / usr / local est étrangement grand
etc...
la source
J'ai utilisé cette commande pour trouver des fichiers de plus de 100 Mo:
la source
J'ai réussi à localiser le (s) pire (s) délinquant (s) en diffusant la
du
sortie sous une forme lisible par l'hommeegrep
et en la faisant correspondre à une expression régulière.Par exemple:
ce qui devrait vous rendre tout ce qui est 500 Mo ou plus.
la source
du -k | awk '$1 > 500000'
. Il est beaucoup plus facile à comprendre, à éditer et à corriger du premier coup.Si vous souhaitez plus de rapidité, vous pouvez activer les quotas sur les systèmes de fichiers que vous souhaitez surveiller (vous ne devez définir de quotas pour aucun utilisateur), et utiliser un script qui utilise la commande quota pour répertorier l'espace disque utilisé par chaque utilisateur. Par exemple:
vous donnerait l'utilisation du disque en blocs pour l'utilisateur particulier sur le système de fichiers particulier. Vous devriez pouvoir vérifier les utilisations en quelques secondes de cette façon.
Pour activer les quotas, vous devez ajouter usrquota aux options du système de fichiers de votre fichier / etc / fstab, puis probablement redémarrer de sorte que quotacheck puisse être exécuté sur un système de fichiers inactif avant que quotaon soit appelé.
la source
Voici une petite application qui utilise un échantillonnage approfondi pour rechercher des tumeurs dans n'importe quel disque ou répertoire. Il parcourt l'arborescence de répertoires à deux reprises, une fois pour la mesurer, et une deuxième fois pour imprimer les chemins d'accès à 20 octets "aléatoires" dans le répertoire.
La sortie ressemble à ceci pour mon répertoire Program Files:
Il me dit que le répertoire est 7.9gb, dont
Il est assez simple de demander si l’un d’entre eux peut être déchargé.
Il indique également les types de fichiers distribués dans le système de fichiers, mais pris ensemble, ils représentent une opportunité pour économiser de l'espace:
Cela montre beaucoup d'autres choses là-dedans aussi, dont je pourrais probablement me passer, comme le support "SmartDevices" et "ce" (~ 15%).
Cela prend du temps linéaire, mais cela ne doit pas être fait souvent.
Exemples de choses qu'il a trouvé:
la source
J'ai eu un problème similaire, mais les réponses sur cette page n'étaient pas suffisantes. J'ai trouvé la commande suivante la plus utile pour la liste:
du -a / | sort -n -r | head -n 20
Ce qui me montrerait les 20 plus gros délinquants. Cependant, même si j'ai couru cela, cela ne m'a pas montré le vrai problème, car j'avais déjà supprimé le fichier. Le problème était qu'un processus en cours était toujours en train de référencer le fichier journal supprimé. Je devais donc d'abord supprimer ce processus, puis l'espace disque apparaissait libre.
la source
Vous pouvez utiliser DiskReport.net pour générer un rapport Web en ligne de tous vos disques.
Avec de nombreuses exécutions, il vous montrera un graphique d’historique pour tous vos dossiers, facile à trouver ce qui a grandi
la source
JDiskReport, un logiciel gratuit multiplate-forme, comprend une interface graphique permettant d'explorer ce qui occupe tout cet espace.
Exemple de capture d'écran:
Bien sûr, vous devrez libérer un peu d’espace manuellement avant de pouvoir le télécharger et l’installer, ou le télécharger sur un autre lecteur (comme une clé USB).
(Copié ici de la réponse du même auteur sur une question en double)
la source