GNU/Linux >> Belajar Linux >  >> Linux

Temukan ukuran dan ruang kosong dari sistem file yang berisi file tertentu

Sejak Python 3.3, ada cara mudah dan langsung untuk melakukannya dengan pustaka standar:

$ cat free_space.py 
#!/usr/bin/env python3

import shutil

total, used, free = shutil.disk_usage(__file__)
print(total, used, free)

$ ./free_space.py 
1007870246912 460794834944 495854989312

Angka-angka ini dalam byte. Lihat dokumentasi untuk info lebih lanjut.


Ini tidak memberikan nama partisi, tetapi Anda bisa mendapatkan statistik sistem file secara langsung menggunakan statvfs Panggilan sistem Unix. Untuk memanggilnya dari Python, gunakan os.statvfs('/home/foo/bar/baz') .

Bidang yang relevan dalam hasil, menurut POSIX:

unsigned long f_frsize   Fundamental file system block size. 
fsblkcnt_t    f_blocks   Total number of blocks on file system in units of f_frsize. 
fsblkcnt_t    f_bfree    Total number of free blocks. 
fsblkcnt_t    f_bavail   Number of free blocks available to 
                         non-privileged process.

Jadi untuk memahami nilainya, kalikan dengan f_frsize :

import os
statvfs = os.statvfs('/home/foo/bar/baz')

statvfs.f_frsize * statvfs.f_blocks     # Size of filesystem in bytes
statvfs.f_frsize * statvfs.f_bfree      # Actual number of free bytes
statvfs.f_frsize * statvfs.f_bavail     # Number of free bytes that ordinary users
                                        # are allowed to use (excl. reserved space)

Jika Anda hanya membutuhkan ruang kosong di perangkat, lihat jawabannya menggunakan os.statvfs() di bawah.

Jika Anda juga memerlukan nama perangkat dan titik pemasangan yang terkait dengan file tersebut, Anda harus memanggil program eksternal untuk mendapatkan informasi ini. df akan memberikan semua informasi yang Anda perlukan -- jika dipanggil sebagai df filename itu mencetak baris tentang partisi yang berisi file tersebut.

Sebagai contoh:

import subprocess
df = subprocess.Popen(["df", "filename"], stdout=subprocess.PIPE)
output = df.communicate()[0]
device, size, used, available, percent, mountpoint = \
    output.split("\n")[1].split()

Perhatikan bahwa ini agak rapuh, karena bergantung pada format yang tepat dari df output, tapi saya tidak mengetahui solusi yang lebih kuat. (Ada beberapa solusi yang mengandalkan /proc sistem file di bawah yang bahkan kurang portabel daripada yang ini.)


Linux
  1. Bagaimana cara menemukan ukuran tumpukan maksimum?

  2. Bagaimana cara mendaftar ukuran setiap file dan direktori dan mengurutkan berdasarkan ukuran menurun di Bash?

  3. Bagaimana menemukan pengelola file default?

  1. Tidak ada lagi ruang di sistem file root, bagaimana saya bisa menambah ukurannya?

  2. AWK dan nama file dengan spasi di dalamnya.

  3. Periksa apakah ukuran file lebih besar dari 1MB menggunakan kondisi IF

  1. Inode dan sistem file Linux

  2. Bagaimana Menemukan Ruang Disk Gratis Dan Menganalisis Penggunaan Disk ??

  3. Apa yang Terjadi Pada Ruang Kosong?