Linux系统下查看目录大小

我们有个系统每天要下载数据,为了检查下载数据是否正常,需要查看下载数据目录大小,因为每天的数据都差不多,如果变化太大就说明不正常。查看目录大小的命令是du(当然也可以查看文件大小),例如:du ems_data,就是查看ems_data目录下各子目录的大小;du,就是查看当前目录下各子目录的大小;du *,就是查看当前目录下各子目录和文件的大小。

为了提高查看效果,我们需要对结果进行排序,因为du的命令结果很乱

从大到小排列:du ems_data | sort -nr

按目录名排列:du ems_data | sort +1 -2

选出排在前面的10个:du ems_data | sort -rn | head

选出排在后面的10个:du ems_data  | sort -rn | tail

当前目录的大小:du -sh .

Read more

uchome2.0升级到discuzX 2.0时friendlog表升级报错

UChome2.0升级到discuz X 2.0过程中,数据转换进行到21/36的时候,报错:

MySQL Error
Message: query_error
SQL: INSERT INTO `XXX`.pre_home_friendlog SET `uid`='XX',`fuid`='XXX',`action`='add',`dateline`='XXXXXX'
Error: Duplicate entry 'XX-XXXX' for key 1
Errno.: 1062
Click here to seek help.

网上搜索了一下,发现discuz官方论坛反馈该问题的也很多,但都是说是表的数据重复了,删除掉就行,而实际上没有人解决该问题,仔细检查了一下数据表,根本不存在重复数据。然后对比了uchome和discuzx该数据表结构发现相同,决定手动将表复制过去~然后将url中的start=XXX中的数字改为很大的一个值调整friendlog表转换。

目前系统运行正常,暂无bug。

 

 

网站迁移常用命令

假期将网站迁移到新服务器同时对系统进行了升级,并做了部分安全维护,整理一下。

数据库导出:mysqldump -uusername -p dbname > /home/admin/name.sql
导出指定数据表:mysqldump -uusername -p dbname table1 table2 > /home/admin/name.sql
数据库导入:mysql -uusername -p dbname < /home/admin/name.sql
文件压缩:zip -r  zipname.zip  filename     zip -r zipname.zip *
文件解压:unzip zipname.zip
文件下载:wget fileurl
返回上级目录:cd ../
修改文件所属用户组:chown -R username.groupname filename
修改文件属性为777:chmod -R 777 filename

以上命令基本即可就可以完成网站的迁移,数据库备份,网站文件打包备份,下载到新的服务器,还原数据库和网站文件,重新配置数据库帐号 密码等信息,修改相关文件属性及所属用户组,更新缓存即可完成网站的迁移。

完成以上迁移后,对不需要php权限的相关目录(图片、模板、附件等目录)进行限制,提高安全性,简单的做法通过htacess文件进行限制:

RewriteEngine on RewriteCond % !^$
 RewriteRule images/(.*).(php)$ – [F]
 RewriteRule uploadfile/(.*).(php)$ – [F]
 RewriteRule templates/default/(.*).(php)$ –[F]

 

在 ProFTPD 中限速、限制连接数、限制用户读取、写入权限

DA面板默认使用的ftp是proftpd,需要对一些ftp帐号进行限速、限制连接数、限制用户读取、写入权限以避免影响服务器上网页访问速度。

 

设置如下:

MaxClients 10 #表示FTP连接数最大为10
MaxClientsPerHost 10 #表示每个客户端到FTP服务器的连接数为10
MaxClientsPerUser 10 #表示每个Userid到FTP服务器的连接数为10
<Limit WRITE> #不允许写
 DenyUser down
 </Limit>
 <Limit RMD RNFR DELE RETR> #不允许删除,改名,下载
 DenyUser upload
 </Limit>
 TransferRate RETR 100 user down #下载限速100KB/S
 TransferRate STOR 300 user upload #上传限速300KB/S
 TransferRate RETR 100:52428800  #表示对下载50M以下的文件不限速,超过50M了才限速。这里,52428800的单位是Byte。

我们用到的比较多的可能是Limit的使用,Limit大致有以下动作,基本能覆盖全部的权限了,大家灵活使用就是了。

CMD:Change Working Directory 改变目录
MKD:MaKe Directory 建立目录的权限
RNFR: ReName FRom 更改目录名的权限
DELE:DELEte 删除文件的权限
RMD:ReMove Directory 删除目录的权限
RETR:RETRieve 从服务端下载到客户端的权限
STOR:STORe 从客户端上传到服务端的权限
READ:可读的权限,不包括列目录的权限,相当于RETR,STAT等
WRITE:写文件或者目录的权限,包括MKD和RMD
DIRS:是否允许列目录,相当于LIST,NLST等权限,还是比较实用的
ALL:所有权限
LOGIN:是否允许登陆的权限

针对上面这个Limit所应用的对象,又包括以下范围

AllowUser 针对某个用户允许的Limit
DenyUser 针对某个用户禁止的Limit
AllowGroup 针对某个用户组允许的Limit
DenyGroup 针对某个用户组禁止的Limit
AllowAll 针对所有用户组允许的Limit
DenyAll 针对所有用户禁止的Limit

关于限制速率的参数为:

TransferRate STOR|RETR 速度(Kbytes/s) user 使用者

 

linux命令行下的FTP 客户端推荐:NcFTP


ncftp与传统的ftp相比,主要有以下改进或变化:详细内容见其官方网站:http://www.ncftp.com/
(1) 子目录下载,采用递归的方法,下载整个目录及其子目录。
(2) 支持断点续传。一次传输没有完成,下次可以接着传输未完成的文件。
(3) 匿名ftp自动登录。目前大部分ftp站点都可以匿名登录,ncftp可以自动登录(默认方式)。
(4) 支持通过防火墙传输和代理服务器。
(5) 支持书签功能,可以将某个位置存在书签中方便以后直接跳转。
(6) 可以显示下载进度。
(7) 显示传输速率。
(8) 文件列表自动满页暂停。当ls文件列表超过一屏,ncftp会自动暂停,等待任意键继续。
(9) 默认是以binary方式传输数据。
(10) 支持文件名自动完成。例如服务器上有文件download.list,您只要输入get down<TAB>,系统可以自动填充文件名为download.list。
(11) 自动记忆站点的离开时的目录,下次登录会自动进入那个目录。

安装ncftp

# apt-get install ncftp
 编译安装:
 # wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.3-src.tar.gz
 # tar zxvf ncftp-3.2.3-src.tar.gz
 # cd ncftp-3.2.3/
 # ./configure --prefix=/usr/local/ncftp
 # make && make install

Read more