Total penggunaan disk untuk pengguna tertentu

11

Saya ingin melihat total penggunaan disk untuk diri saya pada sistem file tertentu. Saya menjalankan perintah

du -h ~my_user_name

Namun, ini mencantumkan setiap direktori yang dimiliki oleh my_user_name. Saya ingin mendapatkan jumlah total dari semua informasi ini. Apa opsi yang tepat untuk dilewati? Saya mencoba

du -h -c ~my_user_name

tapi itu tidak berhasil.

Alex
sumber

Jawaban:

11

Melewati -ske duakan membatasi output hanya item yang ditentukan pada baris perintah.

du -sh ~
Ignacio Vazquez-Abrams
sumber
9

Du hanya akan menampilkan total per folder, bukan per pengguna.

Itu mungkin berhasil jika Anda menginginkan ukuran total, katakanlah, /home/example_user/dan jika hanya example_user yang memiliki file di folder itu. Jika pengguna lain memiliki file di dalamnya maka ini tidak akan menghasilkan ukuran semua file yang Anda miliki, tetapi ukuran total semua file di folder itu.

Untuk mendapatkan informasi per pengguna, baik:

  1. Jika kuota diaktifkan, gunakan perintah itu.
  2. Gunakan find untuk berjalan melalui semua direktori tempat Anda ingin menghitung file. Gunakan uid untuk hanya memilih file Anda dan simpan array asosiatif dalam awk untuk menghitung total.

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

Catatan, ini menggunakan GNU find extension spesifik.

  • Perintah pertama mencari melewati semua file dan direktori di /path/to/search/.
  • -type fpastikan Anda hanya memilih file, jika tidak, Anda juga menghitung ukuran direktori. (Coba buat folder kosong. Mungkin akan menggunakan ruang disk 4k).
  • -user username_whos_files_to_count hanya memilih hasil dari satu pengguna
  • -printf "%s\n" akan mencetak ukuran.

Jika Anda baru saja menjalankan bagian pertama ini, Anda akan mendapatkan daftar angka. Itu adalah ukuran file. (Segala sesuatu lainnya dilucuti, hanya ukurannya yang dicetak berkat perintah cetak% s.)

Kami kemudian dapat menambahkan semua angka itu untuk mendapatkan ringkasan. Dalam contoh, ini dilakukan dengan awk.

Hennes
sumber
+1 poin bagus, terima kasih! jawaban di bawah ini sebenarnya adalah persis apa yang saya inginkan. perbedaan pengguna / folder tidak masalah banyak dalam kasus saya
Alex
Bagus. du -schadalah perintah yang mudah sering digunakan. Melacak siapa yang memiliki apa ketika barang dicampur jauh lebih sulit meskipun itu dapat dilakukan sebagai satu liner. Saya menggunakannya sekali, tetapi saya kesulitan merekonstruksi hari ini.
Hennes
Banyak membantu saya, Penjelasan Sempurna
Babin Lonston
2

Untuk menemukan semua penggunaan oleh pengguna tertentu, perintah yang baik adalah:

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

Anda dapat memodifikasi lebih lanjut tergantung pada kebutuhan spesifik, misalnya saya sering ingin meringkas penggunaan berdasarkan folder, dan yang berikut ini berfungsi dengan baik:

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

Ini hanya menemukan direktori pada satu level, dibatasi oleh pengguna, mengecualikan direktori induk, dan mencetak setiap direktori dan ringkasan di akhir.

asherkhb
sumber