web-dev-qa-db-fra.com

Comment définir une limite de taille de fichier pour un répertoire?

J'ai un répertoire sur mon système qui est utilisé pour une raison spécifique par les applications et les utilisateurs, mais je ne veux pas que sa taille soit autorisée à dépasser 2 Go. Y a-t-il un moyen de définir une sorte de limite qui ne tient tout simplement pas permettre à la taille du fichier de dépasser ce montant ou tout autre montant que je décide de lui fixer ultérieurement?

Lorsque la taille limite est dépassée, la dernière modification doit être annulée (bien qu’une option lui soit proposée pour qu’elle arrête simplement l’opération et ne se soucie pas de savoir si la moitié d’un fichier a été copiée et laissée là), puis un avertissement s'affiche. l'utilisateur.

J'utilise Ubuntu GNOME 16.10 avec GNOME 3.22.

8
user364819

Le quota habituel du système de fichiers sur ext4 est par utilisateur/groupe, et non par répertoire. ZFS peut en quelque sorte définir un quota de répertoire en créant un système de fichiers d'une taille fixe à partir d'un volume ZFS. Une simple astuce consiste toutefois à créer un fichier de 2 Go, à créer un système de fichiers et à le monter dans le dossier souhaité:

$ 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

Dans tous les cas, les quotas de système de fichiers (ou des méthodes telles que celle-ci) ne sont pas aussi conviviaux que vous le souhaitez. Cette méthode est unidirectionnelle flexible, en ce sens que vous pouvez augmenter la taille en ligne , mais la diminuer serait difficile.

Les commandes:

  • touch : touch 2gbarea crée un fichier vide nommé 2gbarea.
  • truncate : truncate est utilisé pour redimensionner les fichiers (dans ce cas, je redimensionne le fichier 2gbarea actuellement vide à 2 Go à l'aide de -s 2G).
  • mke2fs : mke2fs crée des systèmes de fichiers ext2/3/4 (dans ce cas, ext4).
  • mount monte le système de fichiers sur le répertoire donné.
  • df est utilisé pour lister l'utilisation du système de fichiers.
16
muru