Как установить ограничение размера файла для каталога?

8

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

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

Я использую Ubuntu GNOME 16.10 с GNOME 3.22.


источник
Связанные unix.stackexchange.com/q/313940/68757
Heemayl
@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: В основном я не думаю, что это будет файловый браузер, который будет писать в это место, скорее всего, это будут другие конкретные приложения. Нет ли способа «просмотреть» эту папку, чтобы, когда она достигла своей емкости, появилось графическое предупреждение для предупреждения пользователя?