如何限制一个目录下的文件数量?

如何限制一个目录下的文件数量?

是否可以限制特定目录中文件的数量(而不是大小)?

我的目录最多只能包含五个文件,并且cp file_6 mydir不允许。

答案1

您可以使用quota并限制 inode 的数量,这样就无法创建更多文件。要实现这一点,最简单的方法(恕我直言)是将目录设置为特定组(例如)quotagroup

一步一步,全部由root(或使用sudo)完成:

1.安装配额

quota应在所有标准存储库中表示,请使用默认的包管理器。

2. 挂载添加quota选项

/etc/fstab在挂载选项中编辑并添加组配额,例如对于单独的组配额home(重点关注grpquota- 部分):

UUID=ab123-cd45-ef67 /home  ext4  defaults,grpquota 0 1

运行mount -a以应用它,或使用mount -o remount,grpquota /home

3. 激活配额

quotacheck -cgv /home

将在相应设备的安装点级别-c重新创建组配额的配额控制文件 ( aquota.group) 。-g贝尔博斯-v

quotaon -gv /home

激活配额检查。-gv如上。

4. 创建有限组,调整目录设置

addgroup quotagroup
chgrp quotagroup /home/dir/to/limit
chmod g+s /home/dir/to/limit

将创建(将是)受限组quotagroup,将相应目录的组所有权更改为,quotagroup并确保目录中的新文件具有与父级相同的组所有权(g+s=“set gid-bit”)。

5. 定义配额

edquota -g quotagroup /home

允许编辑配额设置。看起来像这样:

Disk quotas for group quotatest (gid 1003):
Filesystem blocks  soft  hard  inodes  soft  hard
/dev/sda2       4     0     0       3     0     0

其中blocks定义已使用的块,后跟块的软配额和硬配额,而 inodes 显示当前使用的 inode,后跟限制。

将索引节点的硬限制设置为6:目录本身为 1,五个文件为 5。软限制用于暂时允许超过给定时间段的限制。当前使用的值不得更改!

6. 限制、问题、评论

  • 每个这样的目录都需要一个单独的配额+特殊组。
  • root不受配额限制。
  • 配额作用于整个挂载点,而不仅仅是特定目录,即这不能应用于目录。
  • 再次强调:/home组中的任何文件quotagroup都将计入配额 - 无论是否在您的受限目录中。
  • XFS是一个允许项目配额的文件系统,即目录中项目的配额。如果有可能,您可能会更喜欢这样做,尤其是对于许多此类情况。
  • 除了完整XFS设备之外,虚拟(环回)设备可能会有所帮助。

相关内容