Come impostare un limite di dimensione del file per una directory?


8

Ho una directory sul mio sistema che viene utilizzata per un motivo specifico da applicazioni e utenti, ma non voglio che le sue dimensioni superino i 2 GB, esiste un modo per impostare una sorta di limite che semplicemente non consentire alle dimensioni del file di superare tale importo o qualsiasi altro importo che deciderò di impostare in futuro?

Quando viene superato il limite di dimensioni, dovrebbe annullare l'ultima modifica (anche se dovrebbe esserci un'opzione per averlo in modo che interrompa semplicemente l'operazione e non si preoccupi se metà file è stato copiato e lasciato lì) e quindi visualizzare un avviso per l'utente.

Sto eseguendo Ubuntu GNOME 16.10 con GNOME 3.22.



@JacobVlijm: Accetterò la risposta di Muru per ora, ma se puoi fornirne una migliore, sarei felice di accettarla.

Risposte:


19

La normale quota del filesystem su ext4 è per utente / gruppo, non per directory. ZFS può impostare una quota di directory, creando un filesystem di dimensioni fisse da un volume ZFS. Un semplice trucco, tuttavia, è quello di creare un file da 2 GB, creare un filesystem su di esso e montarlo nella cartella desiderata:

$ 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

In ogni caso, le quote del filesystem (o metodi come questo) non sono facili da usare come desideri. Questo metodo è unidirezionale, in quanto puoi aumentare le dimensioni online , ma ridurlo sarebbe difficile.

I comandi:

  • touch: touch 2gbareacrea un file vuoto chiamato 2gbarea.
  • truncate: truncateviene utilizzato per ridimensionare i file (in questo caso, ridimensiono il 2gbareafile attualmente vuoto a 2 GB utilizzando -s 2G).
  • mke2fs: mke2fscrea filesystem ext2 / 3/4 (in questo caso ext4).
  • mount monta il filesystem sulla directory data.
  • df viene utilizzato per elencare l'utilizzo del filesystem.

1
Una nuova persona potrebbe confondersi con i comandi. Il loro scopo dovrebbe essere spiegato / collegato?
Rohitt Vashishtha,

@RohittVashishtha meglio?
muru,

Ci sarebbe un modo per farlo lanciare un piccolo messaggio di avviso popup quando viene raggiunta la quota?

@ParanoidPanda "è" essere? Penso che il browser dei file si lamenti quando non c'è più spazio.
muru,

@muru: Principalmente non penso che sarà il browser di file che scriverà in questa posizione, più probabilmente altre applicazioni specifiche. Non c'è modo di "guardare" quella cartella in modo tale che quando ha raggiunto la sua capacità viene visualizzato un avviso grafico per avvisare l'utente?
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.