Trouver tous les fichiers volumineux dans le système de fichiers racine


124

J'ai un serveur Linux, qui utilise actuellement moins d'espace:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

Comme vous pouvez le voir. /est à 78%. Je veux vérifier quels fichiers ou dossiers consomment de l'espace.

J'ai essayé ceci:

find . -type d -size +100M

Ce qui montre le résultat comme ceci:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

Maintenant, c'est mon problème. Je veux seulement le nom de ces fichiers situés dans des dossiers qui consomment de l'espace sur /et non sur /u01ou /home. Depuis /est la base de tout, il me montre tous les fichiers de mon serveur.

Est-il possible d'obtenir de gros fichiers qui contribuent à 78% /?


3
Voir le -xdevprédicat find. Voir aussi du -kx / | xdu(ou xdiskusage).
Stéphane Chazelas


1
pertinentesfind . -type f -print | xargs du -sk | sort -rn
user13107

Réponses:


217

Essayer:

find / -xdev -type f -size +100M

Il répertorie tous les fichiers dont la taille est supérieure à 100M.

Si vous voulez connaître le répertoire, vous pouvez essayer ncdu.

Si vous n'exécutez pas Linux, vous devrez peut-être utiliser -size +204800ou -size +104857600c, étant donné que le Msuffixe signifiant mégaoctets n'est pas dans POSIX.

find / -xdev -type f -size +102400000c

1
-xdevempêche simplement find de traverser les systèmes de fichiers, vous ne ferez donc que la recherche sur votre disque physique actuel. Si ce n'est pas ce que vous voulez, supprimez simplement l' -xdevargument.
plaques de cuisson

49

En plus de @Gnouc answer, vous pouvez également ajouter ls -lapour obtenir plus de détails. Vous devriez avoir sudo privilegesà faire ça.

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

Pour ne voir que les fichiers contenus dans le gigbyte, faites:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2

44

La commande suivante vous permet non seulement de trouver les 50 fichiers les plus volumineux (> 100M) sur votre système de fichiers, mais également de trier (GNU sort) par le plus grand:

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev Ne descendez pas de répertoires sur d'autres systèmes de fichiers.

Sous BSD, findutilisez l’ -xéquivalent du -xdevprimaire déconseillé .

Pour tous les fichiers et répertoires, c'est encore plus simple:

du -ahx / | sort -rh | head -20

(le -xdrapeau est ce qui est nécessaire pour contraindre duà un seul système de fichiers)

Si vous n'utilisez pas GNU sort(from coreutils), utilisez-le sans -h:

du -ax / | sort -rn | head -20

Pour le répertoire actuel uniquement (pour des résultats plus rapides), remplacez /par ..


1
Je voudrais mentionner que cette méthode est bonne car -haffiche une sortie lisible par l'homme et ajoute un exemple de sortie.
Ciro Santilli 中 六四 事件

Très bonne solution. Je vous remercie.
Tigin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.