首先,还是编辑proftpd文档
#磁盘限额部分
QuotaDirectoryTally on
#磁盘限额单位 b"|"Kb"|"Mb"|"Gb"
QuotaDisplayUnits "Kb"
QuotaEngine on
#磁盘限额日志记录
QuotaLog "您的LOG路径"
# 打开磁盘限额信息,当登陆FTP帐户后,使用命令 "quote SITE QUOTA" 后可显示当前用户的磁盘限额
QuotaShowQuotas on
#以下是SQL调用语句,不用修改直接拷贝过去
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, \
bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits \
WHERE name = '%' AND quota_type = '%'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, \
bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies \
WHERE name = '%' AND quota_type = '%'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used %, \
bytes_out_used = bytes_out_used %, bytes_xfer_used = bytes_xfer_used %, \
files_in_used = files_in_used %, files_out_used = files_out_used %, \
files_xfer_used = files_xfer_used % \
WHERE name = '%' AND quota_type = '%'" quotatallies
SQLNamedQuery insert-quota-tally INSERT "%, %, %, %, %, %, %, %" quotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
然后建立mysql 数据表
CREATE TABLE quotalimits (
name VARCHAR(30),
quota_type ENUM("user", "group", "class", "all") NOT NULL,
per_session ENUM("false", "true") NOT NULL,
limit_type ENUM("soft", "hard") NOT NULL,
bytes_in_avail FLOAT NOT NULL,
bytes_out_avail FLOAT NOT NULL,
bytes_xfer_avail FLOAT NOT NULL,
files_in_avail INT UNSIGNED NOT NULL,
files_out_avail INT UNSIGNED NOT NULL,
files_xfer_avail INT UNSIGNED NOT NULL
);
CREATE TABLE quotatallies (
name VARCHAR(30) NOT NULL,
quota_type ENUM("user", "group", "class", "all") NOT NULL,
bytes_in_used FLOAT NOT NULL,
bytes_out_used FLOAT NOT NULL,
bytes_xfer_used FLOAT NOT NULL,
files_in_used INT UNSIGNED NOT NULL,
files_out_used INT UNSIGNED NOT NULL,
files_xfer_used INT UNSIGNED NOT NULL
);
说明一下,quotatallies表无需作修改,他记录了用户当前的磁盘使用情况,由程式自动记录
要注意的是quotalimits 表中一些字段的含意
quota_type 磁盘限额的鉴别,能够配置单各用户,也能够配置一各组中的全部用户,还能够配置全部用户
bytes_in_avail 上传最大字节数,就是FTP用户空间容量 (配置个字段的时候是以byte(字节)为单位,假如要限额在10M,那就是10240000,下面也相同)
bytes_out_avail 下载最大字节数,需要注意的是,这个字段中记录的是用户总共能从服务器上下载多少数据,数据是累计的。
bytes_xfer_avail 总共可传输的文档的最大字节数(上传和下载流量)需要注意的是,这个字段中记录的是用户总共能传输文档的最大字节数,数据是累计的。
files_in_avail INT 总共能上传文档的数目
files_out_avail INT 能从服务器上下载文档的总数目
files_xfer_avail INT 总共可传输文档的数目(上传和下载)
好了,开始使用磁盘限额,我们要将上面建立的user1帐号给予10M空间,最多能上传500个文档到服务器上,文档传输流量为20M,只能传输10个文档。只要在MYSQL中
插入
INSERT INTO `quotalimits` ( `name` , `quota_type` , `per_session` , `limit_type` , `bytes_in_avail` , `bytes_out_avail` , `bytes_xfer_avail` , `files_in_avail` , `files_out_avail` , `files_xfer_avail` )
VALUES ('user1', 'user', 'false', 'soft', '10240000', '0', '2048000', '500', '0', '10');
就能够了,无需配置的部分用0代替就能够了
现在运行proftpd,登陆到user1 ,使用quote SITE QUOTA 就会显示user1用户的磁盘使用情况
ftp> quote SITE QUOTA
200-The current quota for this session are [current/limit]:
Name: user1
Quota Type: User
Per Session: False
Limit Type: Soft
Uploaded Kb: 0.00/10000.00
Downloaded Kb: unlimited
Transferred Kb: 0.00/2000.00
Uploaded files: 0/500
Downloaded files: unlimited
Transferred files: 0/10
200 Please contact root@localhost if these entries are inaccurate
OK,安装完毕
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




