Zajmijmy się problemem zajętości dysków. Często gęsto spotykamy się z sytuacją, że po prostu zaczyna nam się kończyć wolna przestrzeń dyskowa i nie do końca wiemy, czym to jest spowodowane.
Z pomocą przychodzi prosty, terminalowy program – ncdu. Nie dość, że przeskanuje on nam całą zawartość wskazanego katalogu to dodatkowo wyświetli wynik w przystępnej, miłej dla oka formie.
Instalacja programu ogranicza się do zainstalowania jednego pakietu z repozytorium. Najpierw odświeżamy listę pakietów w repo (sudo aptitude update), a następnie instalujemy ncdu (sudo aptitude install ncdu).
Gdy już mamy zainstalowany przystępujemy do działania. Uruchomienie programu bez parametru przeskanuje nam obecny katalog (ncdu).
Po otrzymanym drzewie możemy poruszać się z wykorzystaniem strzałek (góra, dół, wejdź do katalogu, wróć do katalogu nadrzędnego).
Wynik możemy posortować po nazwie – n, rozmiarze – s, albo po ilości plików w katalogu – C (aby wyświetlić ilość plików w danym katalogu wykorzystujemy klawisz c). Możemy też zmienić kolejność, aby najpierw wyświetliło katalogi, a poniżej pliki – z wykorzystaniem przycisku t.
Aplikacja umożliwia zmianę prezentacji wykorzystania dysku. Po naciśnięciu klawisza g możemy ją zmienić na graf, wykorzystanie procentowe lub oba jednocześnie.
Program umożliwia przełączanie pomiędzy apparent size, które określa ile danych jest aktualnie w pliku, a disk usage określającym ile dany plik zajmuje miejsca na dysku (klawisz a).
Z poziomu aplikacji możemy podejrzeć informacje o pliku (i), które wyświetli: lokalizację, typ oraz rozmiary disk usage / apparent size. Bezpośrednio możemy usuwać pliki na dysku (d). Po tego typu działaniach przydałoby się przeliczyć od nowa zajętości – do tego wykorzystujemy r.
Flagi są znacznikami, które widzimy w pierwszej kolumnie. Wyróżniamy:
! – problem z odczytem danego katalogu (spowodowane np. brakiem uprawnień)
. – problem podczas odczytywania podkatalogów, przez co podany rozmiar może być nierzeczywisty (problemem może być również brak uprawnień, bądź występowanie w podkatalogach socketów, linków itp)
< – plik / katalog został wyłączony z obliczeń (z wykorzystaniem odpowiedniego parametru w momencie uruchamiania aplikacji) > – katalog znajduje się na innym systemie plików
@ – typ jest inny niż plik / katalog (np. link, socket)
H – hard link
e – pusty katalog
Program możemy uruchamiać z wieloma przełącznikami. W ten sposób na przykład uzyskamy rozszerzony tryb (-e), który w informacjach o danym pliku wyświetli dodatkowe informacje.
Możemy również wygenerowany wynik zapisać do pliku. Plik wyjściowy będzie sformatowany w formacie JSON. W tym celu dodajemy parametr -o. Jeżeli chcemy, możemy wyświetlić JSON na standardowym wyjściu – w tym celu do przełącznika dodajemy minus: -o –.
Uzyskany wcześniej plik możemy w dowolnym momencie zaimportować wywołując przełącznik -f. Wówczas będziemy mogli przejrzeć w sposób interaktywny rozmiary plików w momencie jego generowania.
NCDU umożliwia kilka opcji skanowania. Jeżeli chcemy, aby skanował jedynie system plików, na którym znajduje się wskazany przez nas katalog wykorzystujemy przełącznik -x. Program pozwala zrobić wykluczenie w skanowaniu. Definiujemy je parametrem —exclude z nazwą katalogu, którego rozmiaru nie potrzebujemy. Tutaj warto zauważyć, iż ten parametr możemy wywołać wielokrotnie (po jednym dla każdego wykluczonego pliku/katalogu).
Istnieje jednak łatwiejszy sposób na wykluczenie wielu plików. Należy utworzyć plik, w którym każda linia to jest jedno wykluczenie, a następnie podczas uruchamiania aplikacji wykorzystać parametr -X i wskazać ten plik.
Na koniec przyjrzyjmy się jeszcze kilku przełącznikom. Program podczas startu informuje nas o postępie skanowania (domyślnie wykorzystywany jest parametr -2). Jeżeli tego nie chcemy wykorzystujemy parametr -0. Istnieje jeszcze parametr -1, który to wyświetla wynik skanowania w jednej linii (postęp skanowania aktualizujący linię).
Jak wspomniałem wcześniej NCDU umożliwia z poziomu interfejsu kasowanie plików. Aby się przed tym uchronić możemy uruchomić go w trybie read-only (parametr -r).
Program zamykamy klawiszem q. Aby uchronić się przed przypadkowym zamknięciem, podczas startu możemy wykorzystać parametr –confirm-quit, który wymusi na nas potwierdzenie zamknięcia.