ディレクトリ内のファイル数を制限する方法は?

ディレクトリ内のファイル数を制限する方法は?

特定のディレクトリのファイル数(サイズではない)を制限できますか?

私のディレクトリには最大5つのファイルしか含めることができず、cp file_6 mydir許可されません。

答え1

quotaもはやファイルが生成されないように、inodeの数を使用して制限することができます。これを達成する最も簡単な方法(IMHO)は、ディレクトリを特定のグループ(たとえば)に設定することですquotagroup

ステップごとに、すべての操作は以下を実行rootまたは使用して実行されますsudo

1. インストールクォータ

quotaすべての標準リポジトリに表示する必要があり、デフォルトのパッケージマネージャを使用してください。

2. クォータオプションの搭載と追加

/etc/fstabたとえば、個々のグループクォータのマウントオプションでグループクォータを編集して追加しますhomegrpquotaセクションに焦点を当てます)。

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と制限を表示します。

inodeのハード制限を6ディレクトリ自体の場合は1に設定し、5つのファイルの場合は5に設定します。ソフトリミットは、指定された期間中にリミットが一時的に超過することを許可するために使用されます。現在使用されている値は変更しないでください。

6.制限、質問、コメント

  • これらの各ディレクトリには、個別のクォータ+特殊グループが必要です。
  • rootクォータ制限は適用されません。
  • クォータは特定のディレクトリだけでなく、マウントポイント全体にも適用されます。つまり、ディレクトリには適用できません。
  • 繰り返しますが、制限されたディレクトリにあるかどうかにかかわらず、グループ内/homeのすべてのファイルはquotagroupクォータに含まれます。
  • XFSプロジェクトクォータ、つまりディレクトリ内のプロジェクトのクォータを許可するファイルシステム。可能であれば、特にこれらの多くの場合にこれを行うことをお勧めします。
  • デバイス全体に加えて、XFS仮想(ループバック)デバイスも役立ちます。

関連情報