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


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.