日期:2014-05-16  浏览次数:20631 次

linux下限制目录的大小

?

从网上找的几种方法,第一种方法测试通过,方法二未通过,3、4还未测试。

?

----------------------------------------------------------

方法一:

dd if=/dev/zero of=/tmp/test.img bs=1M count=100

mkfs /tmp/test.img

mount -o loop /tmp/test.img /mnt/test

----------------------------------------------------------

方法二:

Loopback设备是linux中的一个可以用来像其他媒体设备一样的虚拟设备。媒体设备的例子像硬盘分区,例如/dev/had1,/dev/had2,dev/sda1,或者像/dev/fd0软盘分区一样的整个磁盘。这些设备全部都可以用来储存文件以及目录。它们可以被格式化成需要的文件格式(ext2fs, msdos, ntfs等)然后被mount。

Loopback文件系统就是把一个文件和另外的一个文件系统联系起来,就像一个完整文件系统一样。它可以被格式化和mount成以上所提到过的文件系统。这样,这些设备就被称为/dev/loop0或者/dev/loop1,然后和文件产生联系,然后这个虚拟设备被mount。

你可以用dd命令创建一个你需要限制的最大字节数的文件?

然后用该文件创建loopback设备,然后将该设备挂接到你需要限制的目录就行了?

#dd if=/dev/zero of=/mnt/point1/file.img bs=1k count=1000?

#losetup /dev/loop1 /mnt/point1/file.img?

#mkfs -t ext3 /dev/loop1 1000?

#mkdir /mnt/point2?

#mount -t ext3 /dev/loop1 /mnt/point2

----------------------------------------------------------

方法三:

定期执行限制文件夹容量的脚本

#!/bin/bash

ls -1 /data > /file

df=$(cat file)

for file in $df

do

size=$(/usr/bin/du -sk /data/$file |/bin/cut -f1)

while [ 1024 -lt $size ] do

? ?chmod -R 400 /data//data/$file

? ?exit

done?

done

----------------------------------------------------------

方法四

先使用quota限制某一使用者或群组最大磁盘配额然后以创建链接的方式限制文件夹的大小

1.开启磁盘的 quota 功能:编辑/etc/fstab ,使得准备要开放的 quota 磁盘可以支持 quota;?

2.预扫瞄磁盘的使用情况:使用quotacheck 来扫瞄一下我们要使用的磁盘;?

3.建立使用者的quota :使用edquota 来编辑每个使用者或群组的可使用空间;

4.启动quota:使用quotaon

5.依据不同的使用者与群组来设定quota然后创建链接

开启磁盘的quota功能:?

#vi /etc/fstab?

/dev/hda1 ? ? ? / ? ? ? ? ? ? ? ext3 ? ? ? ? ? ?defaults ? ? ? ?1 ? ? ? 1?

/dev/hda2 ? ? ? swap ? ? ? ? ? ?swap ? ? ? ? ? ?defaults ? ? ? ?0 ? ? ? 0?

/dev/hdb1 ? ? ? /backup ? ? ? ? ext3 ? ? ? ? ? ?defaults ? ? ? ?1 ? ? ? 1?

/dev/hdb2 ? ? ? /home ? ? ? ? ? ext3 ? ? ? ? ? ?defaults,usrquota,grpquota 1 1

(1)重新开机==>reboot;也可以选择?

(2)重新 remount filesystem 来驱动设定值(RH)

# umount /dev/hdb2?

# mount -a?

或者

#mount -a -o remount <==这个指令可以重新将 /etc/fstab

扫瞄磁盘的使用者使用状况,并产生重要的aquota.group与aquota.user:

#quotacheck -avug?

quotacheck: Scanning /dev/hdb2 [/home] done?

quotacheck: Checked 10 directories and 22 files?

Linux 版本中,我不能够以 aquota.user(group)来启动我的quota ,建立连接quota.user(group)

#ln -s aquota.group quota.group?

#ln -s aquota.user quota.user

启动 quota 的限额:

#quotaon -av?

编辑使用者的可使用空间:

/dev/hdb2 ? ? ? ? ? ? ?32 ? ? 40000 ? ? ? 50000 ? ? ? ? ?8 ? ? ? ?0 ? ? ? ?0

#edquota -p test test2 \\将这个设定同时复制给 test2

#edquota -t \\设定宽限时间

#quota –vu test test2 \\查询一下是否真的有设定进去

设定开机时启动:

#vi /etc/rc.d/rc.local

/sbin/quotaon -au

创建链接:

ln -s /home/test /var/www/#edquota –u test?

Disk quotas for user test (uid 501):?

Filesystem ? ? ? ? blocks ? ? ? soft ? ? ? hard ? ? inodes ? ? soft ? ? hard?

/dev/hdb2 ? ? ? ? ? ? ?32 ? ? 40000 ? ? ? 50000 ? ? ? ? ?8 ? ? ? ?0 ? ? ? ?0

#edquota -p test test2 \\将这个设定同时复制给 test2

#edquota -t \\设定宽限时间

#quota –vu test test2 \\查询一下是否真的有设定进去

设定开机时启动:

#vi /etc/rc.d/rc.local

/sbin/quotaon -au

创建链接:

ln -s /home/test /var/www/

?

-----------------------------------------------------

主要来源网址:http://hi.baidu.com/kouzl/blog/item/76ae7413a1d224045baf536b.html

?