Bagaimana cara menetapkan batas ukuran file untuk direktori?

8

Saya memiliki direktori di sistem saya yang digunakan untuk alasan tertentu oleh aplikasi dan pengguna, tetapi saya tidak ingin ukurannya diizinkan melebihi 2GB, apakah ada cara mengatur semacam batas yang tidak bolehkan ukuran file melebihi itu atau jumlah lain yang saya putuskan untuk ditetapkan di masa mendatang?

Ketika batas ukuran terlampaui itu harus membatalkan perubahan terakhir (meskipun harus ada opsi untuk memilikinya sehingga hanya menghentikan operasi dan tidak peduli jika setengah file disalin dan dibiarkan di sana) dan kemudian menampilkan peringatan kepada pengguna.

Saya menjalankan Ubuntu GNOME 16.10 dengan GNOME 3.22.


sumber
@JacobVlijm: Saya akan menerima jawaban muru untuk saat ini, tetapi jika Anda bisa memberikan jawaban yang lebih baik maka saya akan dengan senang hati menerima jawaban itu.

Jawaban:

19

Kuota sistem file biasa pada ext4 adalah per-pengguna / grup, bukan per-direktori. ZFS dapat menyortir kuota direktori, dengan membuat sistem file dengan ukuran tetap dari volume ZFS. Namun, trik sederhana adalah membuat file 2GB, membuat sistem file di atasnya, dan memasangnya di folder yang diinginkan:

$ touch 2gbarea
$ truncate -s 2G 2gbarea
$ mke2fs -t ext4 -F 2gbarea
mke2fs 1.43.3 (04-Sep-2016)
Discarding device blocks: done                            
Creating filesystem with 524288 4k blocks and 131072 inodes
Filesystem UUID: bf1b2ee8-a7df-4a57-9d05-a8b60323e2bf
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

$ sudo mount 2gbarea up    
$ df -h up
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0      2.0G  6.0M  1.8G   1% /home/muru/up

Bagaimanapun, kuota sistem file (atau metode seperti ini) tidak semudah yang Anda inginkan. Metode ini fleksibel satu arah, karena Anda dapat menambah ukuran secara daring , tetapi menguranginya akan sulit.

Perintah:

  • touch: touch 2gbareamembuat file kosong bernama 2gbarea.
  • truncate: truncatedigunakan untuk mengubah ukuran file (dalam hal ini, saya mengubah ukuran 2gbareafile yang kosong saat ini menjadi 2 GB menggunakan -s 2G).
  • mke2fs: mke2fsmembuat filesystem ext2 / 3/4 (dalam hal ini, ext4).
  • mount me-mount sistem file pada direktori yang diberikan.
  • df digunakan untuk membuat daftar penggunaan sistem file.
muru
sumber
1
Orang baru mungkin bingung dengan perintahnya. Haruskah tujuan mereka dijelaskan / ditautkan?
Rohitt Vashishtha
@RohittVashishtha lebih baik?
muru
Apakah akan ada cara untuk mendapatkannya untuk meluncurkan pesan peringatan popup kecil ketika kuota tercapai?
@ParanoidPanda "itu" sedang? Saya pikir browser file tidak mengeluh ketika tidak ada ruang yang tersisa.
muru
@uru: Terutama saya tidak berpikir itu akan menjadi file browser yang akan menulis ke lokasi ini, lebih mungkin untuk aplikasi spesifik lainnya. Apakah tidak ada cara untuk "menonton" folder itu sehingga ketika sudah mencapai kapasitasnya sebuah peringatan grafis muncul untuk memperingatkan pengguna?