Całkowite użycie dysku dla określonego użytkownika

12

Chciałbym zobaczyć całkowite wykorzystanie dysku dla siebie w danym systemie plików. Wykonałem polecenie

du -h ~my_user_name

Wymienia to jednak każdy katalog należący do my_user_name. Chciałbym uzyskać sumę wszystkich tych informacji. Jaką opcję należy przekazać? próbowałem

du -h -c ~my_user_name

ale to nie zadziałało.

Alex
źródło

Odpowiedzi:

11

Przekazywanie -sdo duograniczy wynik tylko do elementów określonych w wierszu polecenia.

du -sh ~
Ignacio Vazquez-Abrams
źródło
9

Du pokaże tylko sumy na folder, a nie na użytkownika.

Może to działać, jeśli chcesz mieć całkowity rozmiar, powiedzmy, /home/example_user/i jeśli tylko ten przykładowy użytkownik ma pliki w tym folderze. Jeśli inni użytkownicy mają w nich pliki, nie spowoduje to uzyskania rozmiaru wszystkich plików będących własnością użytkownika, ale całkowity rozmiar wszystkich plików w tym folderze.

Aby uzyskać informacje na użytkownika:

  1. Jeśli masz włączony przydział , użyj tych poleceń.
  2. Użyj polecenia find, aby przejść przez wszystkie katalogi, w których chcesz policzyć swoje pliki. Użyj identyfikatora użytkownika, aby wybrać tylko pliki i utrzymywać tablicę asocjacyjną w awk, aby policzyć sumy.

find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'

Uwaga, używa to określonego rozszerzenia GNU find.

  • Pierwsze polecenie przeszukuje wszystkie pliki i katalogi w /path/to/search/.
  • -type fupewnia się, że wybierasz tylko pliki, w przeciwnym razie liczysz również rozmiar katalogów. (Spróbuj zrobić pusty folder. Prawdopodobnie zajmie miejsce na dysku 4k).
  • -user username_whos_files_to_count wybiera wyniki tylko od jednego użytkownika
  • -printf "%s\n" wydrukuje rozmiar.

Jeśli po prostu uruchomisz pierwszą część tego, otrzymasz listę liczb. To są rozmiary plików. (Cała reszta jest rozebrana, drukowany jest tylko rozmiar, dzięki poleceniu drukowania% s).

Następnie możemy dodać wszystkie te liczby, aby uzyskać podsumowanie. W tym przykładzie robi się to z awk.

Hennes
źródło
+1 dobry punkt, dzięki! odpowiedź poniżej była dokładnie tym, czego chciałem. rozróżnienie użytkownik / folder nie ma większego znaczenia w moim przypadku
Alex
Miły. du -schto często używane łatwe polecenie. Śledzenie, kto był właścicielem tego, co było pomieszane, jest o wiele trudniejsze, choć można to zrobić jako jedną linijkę. Raz go użyłem, ale dzisiaj miałem problem z rekonstrukcją.
Hennes
Bardzo mi
pomogło
2

Aby znaleźć wszystkie zastosowania określonego użytkownika, dobrym poleceniem jest:

find -user $USER -type f -exec du -chs {} +

Możesz dalej modyfikować w zależności od konkretnych potrzeb, na przykład często chcę podsumować użycie według folderu, a następujące działania działają dobrze:

find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +

Znajduje tylko katalogi na jednym poziomie, ogranicza według użytkownika, wyklucza katalog nadrzędny i drukuje każdy katalog i podsumowanie na końcu.

asherkhb
źródło