Como definir um limite de tamanho de arquivo para um diretório?

5

Eu tenho um diretório no meu sistema que é usado por um motivo específico por aplicativos e usuários, mas eu não quero que seu tamanho exceda 2GB, existe uma maneira de configurar algum tipo de limite que apenas não permite que o tamanho do arquivo exceda esse ou qualquer outro valor que eu decida definir para ele no futuro?

Quando o limite de tamanho é excedido, ele deve desfazer a última alteração (embora deva haver uma opção para que ele simplesmente pare a operação e não se importe se metade de um arquivo foi copiado e deixado lá) e depois exiba um aviso para o usuário.

Estou executando o Ubuntu GNOME 16.10 com o GNOME 3.22.

    
por Great Uncle Bulgaria 24.10.2016 / 16:54

1 resposta

10

Cota usual do sistema de arquivos no ext4 é por usuário / grupo, não por diretório. O ZFS pode definir uma cota de diretório, criando um sistema de arquivos de tamanho fixo fora do volume do ZFS. Um truque simples, no entanto, é criar um arquivo de 2GB, criar um sistema de arquivos e montá-lo na pasta desejada:

$ 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

Em qualquer caso, as cotas do sistema de arquivos (ou métodos como este) não são tão amigáveis quanto você deseja. Esse método é de mão única flexível, pois você pode aumentar o tamanho on-line , mas diminuí-lo seria difícil.

Os comandos:

  • touch : touch 2gbarea cria um arquivo vazio chamado 2gbarea .
  • truncate : truncate é usado para redimensionar arquivos (nesse caso, redimensiono o arquivo 2gbarea atualmente vazio para 2 GB usando -s 2G ).
  • mke2fs : mke2fs cria sistemas de arquivos ext2 / 3/4 (neste caso, ext4).
  • mount monta o sistema de arquivos no diretório especificado.
  • df é usado para listar o uso do sistema de arquivos.
por muru 24.10.2016 / 18:03