Як встановити обмеження розміру файлу для каталогу?


8

У моїй системі є каталог, який з певних причин використовується програмами та користувачами, але я не хочу, щоб його розмір дозволяв перевищувати 2 Гб, чи є спосіб встановити якийсь обмеження, яке просто не дозволити розмір файлу перевищити той чи будь-який інший обсяг, який я вирішу встановити для нього в майбутньому?

При перевищенні обмеження розміру слід скасувати останню зміну (хоча повинна бути опція, щоб вона просто зупиняла роботу і не хвилювалася, чи було скопійовано і залишено половину файлу), а потім вивести попередження на користувач.

Я запускаю Ubuntu GNOME 16.10 з GNOME 3.22.



@JacobVlijm: Я зараз прийму відповідь Муру, але якщо ви можете надати кращу, то я би радий прийняти її.

Відповіді:


19

Звичайна квота файлової системи на ext4 призначена для користувача / групи, а не для каталогу. ZFS може впорядкувати встановлену квоту каталогів, створивши файлову систему фіксованого розміру з обсягом ZFS. Хоча простий трюк - створити файл 2 Гб, створити на ньому файлову систему та встановити її в потрібну папку:

$ 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

У будь-якому випадку квоти файлової системи (або подібні методи) не такі зручні для користувачів, як ви хочете. Цей метод є однобічним гнучким, оскільки ви можете збільшити розмір в Інтернеті , але зменшити його буде важко.

Команди:

  • touch: touch 2gbareaстворює порожній файл з ім'ям 2gbarea.
  • truncate: truncateвикористовується для зміни розміру файлів (у цьому випадку я змінюю розмір поточного порожнього 2gbareaфайлу до 2 ГБ за допомогою -s 2G).
  • mke2fs: mke2fsстворює файлові системи ext2 / 3/4 (у цьому випадку ext4).
  • mount монтує файлову систему в заданому каталозі.
  • df використовується для переліку використання файлової системи.

1
Нова людина може заплутатися в командах. Чи слід пояснити / зв'язати їх призначення?
Рохіт Вашишта

@RohittVashishtha краще?
муру

Чи буде якийсь спосіб змусити його запустити невелике спливаюче повідомлення з попередженням, коли квота буде досягнута?

@ParanoidPanda "це" істота? Я думаю, що браузер файлів скаржиться, коли не залишилося місця.
муру

@muru: В основному, я не думаю, що файловий браузер записуватиме це місце, швидше за все, це будуть інші конкретні програми. Чи не існує способу "дивитися" цю папку, щоб після досягнення її можливостей з'явилося графічне попередження, щоб сповістити користувача?
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.