¿Cómo establecer un límite de tamaño de archivo para un directorio?

8

Tengo un directorio en mi sistema que es utilizado por una razón específica por las aplicaciones y los usuarios, pero no quiero que se permita que su tamaño supere los 2 GB, ¿hay alguna forma de establecer algún tipo de límite que simplemente no ¿Permitir que el tamaño del archivo exceda esa o cualquier otra cantidad que decida establecer en el futuro?

Cuando se excede el límite de tamaño, debería deshacer el último cambio (aunque debería haber una opción para tenerlo, de modo que simplemente detenga la operación y no le importe si se copió la mitad de un archivo y se dejó allí) y luego mostrará una advertencia para el usuario.

Estoy ejecutando Ubuntu GNOME 16.10 con GNOME 3.22.


fuente
@JacobVlijm: aceptaré la respuesta de muru por ahora, pero si puedes proporcionar una mejor, entonces me complacería aceptarla.

Respuestas:

19

La cuota habitual del sistema de archivos en ext4 es por usuario / grupo, no por directorio. ZFS puede ordenar o establecer una cuota de directorio, creando un sistema de archivos de un tamaño fijo en un volumen ZFS. Sin embargo, un truco simple es crear un archivo de 2GB, crear un sistema de archivos en él y montarlo en la carpeta deseada:

$ 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

En cualquier caso, las cuotas del sistema de archivos (o métodos como este) no son tan fáciles de usar como desee. Este método es flexible en un sentido, ya que puede aumentar el tamaño en línea , pero disminuirlo sería difícil.

Los comandos:

  • touch: touch 2gbareacrea un archivo vacío llamado 2gbarea.
  • truncate: truncatese usa para cambiar el tamaño de los archivos (en este caso, cambio el tamaño del 2gbareaarchivo actualmente vacío a 2 GB usando -s 2G).
  • mke2fs: mke2fscrea sistemas de archivos ext2 / 3/4 (en este caso, ext4).
  • mount monta el sistema de archivos en el directorio dado.
  • df se usa para enumerar el uso del sistema de archivos.
muru
fuente
1
Una nueva persona puede confundirse con los comandos. ¿Debería explicarse / vincularse su propósito?
Rohitt Vashishtha
@RohittVashishtha mejor?
muru
¿Habría alguna forma de hacer que lanzara un pequeño mensaje de advertencia emergente cuando se alcanza la cuota?
@ParanoidPanda "es" ser? Creo que el explorador de archivos se queja cuando no queda espacio.
muru
@muru: Principalmente no creo que sea el explorador de archivos el que escribirá en esta ubicación, sino más probablemente otras aplicaciones específicas. ¿No hay forma de "mirar" esa carpeta para que cuando haya alcanzado su capacidad aparezca una advertencia gráfica para alertar al usuario?