Sposobów kilka na poszukiwanie co nam zjada miejsce na dysku - czyli jak wyszukiwać największe pliki i/lub katalogi w systemie

Często w swojej pracy zmuszeni jesteśmy do przeprowadzenia małego śledztwa, które ma na celu określenie kto lub co zajmuje tyle  przestrzeni dyskowej. W tym artykule pozwolę sobie zebrać kilka sposobów na wyszukiwanie najbardziej przestrzeniożernych elementów na dysku (w systemie).

Wyszukiwanie największych katalogów i plików z wykorzystaniem narzędzia du

Komenda du pozwala nam na określenie zajętości przestrzeni dyskowej poszczególnych elementów w strukturze katalogowej (ang. disk usage). Samo w sobie nie pozwala na sortowanie wyników (póki co) więc musimy wykorzystać dodatkowe polecenia - w naszym wypadku będzie to sort (sortowanie linii tekstu/danych na standardowym wejściu) oraz head (wyświetlanie początkowej częsci tekstu z pliku lub pierwszych linii ze standardowego wejścia). Chcąc wyszukać największe elementy w całym systemie - zaprzęgajamy tę narzędzia do działania otrzymujemy polecenie:

# du -a /|sort -n -r|head -n 10
5415608 /var
3516492 /var/www
2061324 /var/www/galeria.linuxway.eu
2061308 /var/www/galeria.linuxway.eu/htdocs
2061304 /var/www/galeria.linuxway.eu/htdocs/gallery
1992220 /var/www/galeria.linuxway.eu/htdocs/gallery/g2data
1772256 /var/www/galeria.linuxway.eu/htdocs/gallery/g2data/albums 1184184 /var/lib
786452 /var/lib/mongodb
786444 /var/lib/mongodb/journal

gdzie:

du -a oblicza zajętość dla wszystkich elementów w podanym katalogu - włącznie z plikami

sort -n -r sortuje dane numerycznie (-n), w kolejności malejącej (-r)

head -n 10 wyświetla pierwsze 10 linii

W wypadku takiego wykorzystania du rozmiar elementów podawany jest w blokach, ktore najczęściej (do niedawna) miały rozmiar 512 bajtów - w tym wypadku jest to 512 bajtów. Wynik należy więc odpowiednio przeliczyć

Jeśli chcemy uzyskać bardziej przyjazny raport możemy skorzystać z poniższej komendy:

# du -ah /|sort -h -r|head -n 10
5,2G /var
3,4G /var/www
2,0G /var/www/galeria.linuxway.eu/htdocs/gallery
2,0G /var/www/galeria.linuxway.eu/htdocs
2,0G /var/www/galeria.linuxway.eu
1,9G /var/www/galeria.linuxway.eu/htdocs/gallery/g2data
1,7G /var/www/galeria.linuxway.eu/htdocs/gallery/g2data/albums
1,2G /var/lib
769M /var/lib/mongodb/journal
769M /var/lib/mongodb

gdzie -h w opcjach sort i du wymusza wyświetlanie wyników w bardziej "ludzkiej formie".

Wyszukiwanie największych plików z użyciem find

Można spróbować analogicznie wykorzystać narzędzie find - w tym wypadku wyszukuje 10 największych plików:

# find /var -type f -ls | sort -r -n -k 7 | head -n 10
2104398 293976 -rw-r--r-- 1 apache apache 301024259 sty 4 01:33 /var/www/www.motomy.com/php_errors.log
790879 262148 -rw------- 1 mongodb mongodb 268435456 gru 18 21:02 /var/lib/mongodb/journal/j._0
790878 262144 -rw------- 1 mongodb mongodb 268435456 paź 11 09:51 /var/lib/mongodb/journal/prealloc.1
790877 262144 -rw------- 1 mongodb mongodb 268435456 paź 11 09:52 /var/lib/mongodb/journal/prealloc.2
1441958 218136 -rw-rw-r-- 1 root utmp 223361664 sty 4 01:42 /var/log/wtmp
1441804 149816 -rw------- 1 root root 153410082 sty 4 01:42 /var/log/messages
1183564 69004 -rw-r--r-- 1 apache apache 70653399 sty 4 01:31 /var/www/old.optilabs.eu/htdocs/log/production.log
790446 43132 -rw-rw---- 1 mysql mysql 44164086 kwi 25 2010 /var/lib/mysql/mysqld-bin.000005
789418 40808 -rw-rw---- 1 mysql mysql 41783424 lut 28 2011 /var/lib/mysql/mysqld-bin.000015
2101595 34572 -rw-r--r-- 1 root root 35401716 gru 16 17:09 /var/www/TransportDublin.old/neo4j-community-1.6.M02-unix.tar.gz

Wyświetlanie największych plików w katalogu

Do wyszukiwania największych plików w katalogu możemy użyć ls. Pozwala nam ono na posortowanie plików na wyjściu polecenia pod kątem rozmiaru.
10 największych plików w katalogu wyszukamy tak:
# ls -lSh|head -n 10
-rw-r--r-- 1 root root 344M 01-04 01:34 loh
drwxr-xr-x 2 root root 4,0K 12-29 23:55 hsperfdata_root
drwxr-xr-x 4 root root 4,0K 12-29 23:25 Jetty_localhost_7474_webadmin.html__webadmin__.w17eyp
drwxr-xr-x 3 root root 4,0K 12-27 21:12 npm-1325016766869
drwxr-xr-x 6 root root 4,0K 12-29 23:16 npm-1325196999659
drwxr-xr-x 6 root root 4,0K 12-29 23:16 npm-1325197017013
drwxr-xr-x 6 root root 4,0K 12-29 23:17 npm-1325197057551
drwxr-xr-x 6 root root 4,0K 12-29 23:25 npm-1325197504346
d-ws--x--x 6 root root 4,0K 12-18 21:01 passenger.3374

Sposobów jest więcej. A ty jaki sposób preferujesz?

Komentarz