Bagaimana saya bisa menemukan jumlah file pada sistem file?


26

Saya ingin tahu berapa banyak file yang saya miliki di sistem file saya. Saya tahu saya bisa melakukan sesuatu seperti ini:

find / -type f | wc -l

Ini tampaknya sangat tidak efisien. Yang ingin saya lakukan adalah mencari jumlah total inode unik yang dianggap sebagai 'file'.

Apakah ada cara yang lebih baik?

catatan:

Saya ingin melakukan ini karena saya sedang mengembangkan program sinkronisasi file, dan saya ingin melakukan beberapa analisis statistik (seperti berapa banyak file pengguna rata-rata memiliki total vs berapa banyak file pada sistem). Saya tidak, bagaimanapun, perlu tahu apa-apa tentang file-file itu, hanya saja mereka ada (jalur tidak masalah sama sekali). Saya terutama ingin tahu info ini untuk setiap sistem file yang terpasang (dan itu terkait titik mount).

Jawaban:


34

Opsi --inodes untuk dfmemberi tahu Anda berapa banyak inode yang dicadangkan untuk digunakan. Sebagai contoh:

$ df --inodes / /home
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1            3981312  641704 3339608   17% /
/dev/sda8            30588928  332207 30256721    2% /home
$ sudo find / -xdev -print | wc -l
642070
$ sudo find /home -print | wc -l
332158
$ sudo find /home -type f -print | wc -l
284204

Perhatikan bahwa jumlah entri yang dikembalikan findlebih besar daripada IUseduntuk sistem berkas root (/), tetapi lebih sedikit untuk / home. Namun keduanya berada dalam 0,0005%. Alasan untuk perbedaan ini adalah karena hubungan keras dan situasi serupa.

Ingat bahwa direktori, symlink, soket domain UNIX dan pipa bernama semuanya 'file' karena berkaitan dengan sistem file. Jadi menggunakan find -type fflag sangat tidak akurat, dari sudut pandang statistik.


Saya pikir ini yang saya cari. Apakah ada cara untuk mengetahui berapa banyak dari setiap jenis file yang ada? Ini tidak secara langsung dibutuhkan oleh aplikasi saya, tetapi bisa menjadi pengetahuan yang berguna.
beatgammit

1
Bukan tanpa memeriksa inode dari setiap file di filesystem, yang akan hampir sama dengan melakukan pencarian.
Arcege

Apakah df mengerti sebagian besar sistem file (ext2-4, ntfs, fat, reiserfs, dll)?
beatgammit

Itu akan mengerti semua tipe sistem file yang bisa di-mount. Beberapa tipe sistem file tidak memiliki inode (misalnya, gemuk); dfakan menampilkan jumlah total inode sebagai 0 pada sistem file tersebut. Tipe lain harus menunjukkan statistik inode filesystem yang mendasarinya.
Arcege

Apakah Anda harus mengarahkan kesalahan ke /dev/nullmelihat karena Anda akan mendapatkan baris yang memperingatkan Anda bahwa file di /proc"virtual"?
n0pe

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.