是否可以限制特定目录中文件的数量(而不是大小)?
我的目录最多只能包含五个文件,并且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
设备之外,虚拟(环回)设备可能会有所帮助。