Comment trouver quels fichiers occupent 80% de l'espace sur un serveur Web Linux?


15

Le lecteur se remplit constamment. Vous avez traqué tous les fichiers de rechange et aléatoires que vous pouvez. grep'd pour les fichiers coredump et même supprimé certaines des sauvegardes inutiles ...

Quel serait votre prochain coup.

Le serveur en question a 10 Go de fichiers de site Web et le système d'exploitation ne devrait pas prendre plus de 10 Go, alors comment pouvez-vous trouver ce qui remplit un lecteur (virtuel) de 50 Go?


Réponses:



23

Certes, il existe des moyens plus élaborés, mais celui dont je me souviens est

du --max-depth = 1 -h /

Maintenant, prenez le répertoire qui utilise le plus d'espace (du --max-depth=1 -h /yourdir)et allez plus loin jusqu'à ce que vous trouviez votre coupable.
Si vous souhaitez que votre sortie soit triée par taille et ne se soucie pas du format lisible par l'homme, vous pouvez également le fairedu --max-depth=1 /your_dir | sort -n


Ouais. Je fais à peu près la même chose "du -S | sort -n -r | less". Je serais vraiment ravi de voir un programme qui ressemblait à htop et cron'd comme mlocate mais quand il a été exécuté, il vous a donné des informations précises et contemporaines sur les fichiers sur votre système.
Gareth

1
Au lieu de démarrer à partir de / sur le serveur Web, essayez de démarrer à partir de http_root. S'il n'y a pas de succès là-bas, alors on peut aller pour «/». Le répertoire exécutant du on '/' prendra beaucoup de temps.
Saurabh Barjatiya

4

J'utilise le programme Gnome baobab. Vous pouvez l'exécuter sur votre bureau et vous ne pouvez pas vous connecter via SSH au serveur. Il montre une carte graphique facile à lire de l'utilisation de l'espace disque. Il est installé sous Gnome comme "Disk Usage Analyzer"



2

df -k montre quels fs sont le problème. Ensuite, passez au répertoire de niveau supérieur et exécutez du -xk | sort -n | tail -25 affichera les 25 dir supérieurs, triés, pour le soleil 9 ou plus tôt, remplacez le x par un d.


Oui, similaire à ce que je viens de mentionner dans la réponse de @Marie Fischer. Pourquoi utiliser le -k (taille de bloc) plutôt que -h pour l'homme?
Gareth

-k est utilisé pour que toutes les tailles soient reportées en Ko. Ceci est utile pour le tri, sinon le tri mettrait 10 Ko avant 20 Mo lors du tri.
Saurabh Barjatiya

1

Notez que les fichiers peuvent être supprimés pendant qu'ils sont toujours écrits, ils utilisent donc l'espace disque pendant l'exécution de leur processus de création, mais sans nom de fichier.

Cela le rend introuvable avec les outils habituels - vous pouvez utiliser lsof pour rechercher quels processus ont des fichiers ouverts.


J'utilise /usr/sbin/lsof | grep deletedpour l'obtenir.
Kevin M

0

Si vous pouvez exécuter un logiciel sur le système, alors xdiskusage vous montrera graphiquement quels répertoires / fichiers mangent votre espace. Extrêmement utile.

Je crois que KDE contient quelque chose de similaire.

S'il s'agit uniquement de texte et que vous ne pouvez pas installer de logiciel supplémentaire, l'utilisation créative de y duarrivera probablement également.


0
  1. cd vers le répertoire de base des serveurs Web (répertoire de base d'Apache)
  2. exécutez la commande "du -a | head -30 | sort -nr"
  3. il vous donnera les 30 plus gros fichiers / répertoires consommant le disque
  4. vous pouvez les trouver et les supprimer (si ce n'est pas utile)

Cela ne fonctionnera que si vous modifiez l'ordre de headet sort. Vous devez également utiliser les fonctionnalités de formatage.
kasperd

0

Vous pouvez utiliser les commandes suivantes pour trouver quels fichiers ou dossiers occupent trop d'espace.

Par exemple, pour afficher les 20 plus gros répertoires du dossier actuel, utilisez la ligne unique suivante:

du -ah . | sort -rh | head -20

ou:

du -a . | sort -rn | head -20

Pour les 20 plus gros fichiers du répertoire actuel (récursivement):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

ou avec des tailles lisibles par l'homme:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

La deuxième commande pour fonctionner correctement sur OSX / BSD (comme ce sortn'est pas le cas -h), vous devez installer à sortpartir de coreutils. Ajoutez ensuite le dossier bin à votre PATH.

Vous pouvez définir ces commandes comme des alias (par exemple, ajouter à vos fichiers rc tels que .bash_profile):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

Ensuite, exécutez bigou big-filesà l'intérieur des dossiers que vous pensez avoir lieu (par exemple dans /home).


0

voici quelque chose que j'ai bricolé pour traquer certains processus malveillants sur nos serveurs de base de données: rabbitfinder

#!/bin/sh
tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp

c'est un peu maladroit et pas très robuste, mais ça marche ainsi:

  1. générer une liste arborescente récursive du répertoire courant
  2. attendez 5 secondes
  3. générer une autre liste
  4. comparer les deux sorties
  5. fusionner les fichiers qui ont changé de taille et
  6. ps -lFp montrera aux fichiers quel processus les possède

    user@poseidon:~$ tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
    ./tmp/output:       
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
    0 R 1000     14310 14275 23  80   0 -  1072 -        748   1 22:19 pts/2    00:00:06 dd if /dev/zero of ./output bs 1024 count 10000000
    
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.