rsync对隐藏文件和指定文件的排除处理
星期一, 二月 6th, 2012在进行异地镜像时,rsync对隐藏文件的处理往往会出现一些问题,隐藏文件一般是系统文件,所以会牵扯到linux权限问题,从而导致rsync同步出错。
解决这个问题的办法是,在客户端通过exclude参数对指定文件或文件夹进行排除。
例如要排除备份目录下的以.开头的文件,可以用这样的命令:
排除备份目录下的abc文件夹:
也可以同时排除多个文件夹:
也可以用 –exclude-from 来指定用来排除的文件列表:
此时的exclude.list文件的内容为:
[0-9]*
abc/.[a-z0-9]*
.svn
注意两点:
1.以上列表会延伸至子目录。
2.以上单条命令或是文件包含,都支持通配符。
==================================
另外对于软硬链接的文件或目录,在使用rsync命令的时候一定要加上大写L参数,才能对相应目录进行备份。否则只是备份了一个指针,没有内容。命令如是:
linux下内存占用统计的正确方法
星期三, 十一月 16th, 2011我们在linux下查看内存使用情况的时候往往会用:free -m 命令。得到的结果如下:
![]()
显示内存占用为3823。我们根据经验会有这样的结论,系统启动后,随着时间的增加,快则几分钟,慢则几个小时,linux的内存占用会接近90%。如果真是这样,那是很恐怖的,但事实并非如此。真正计算linux内存占用的方法是:used – buffers – cached。如上图,内存占用实际为:3823 – 339 – 2951 = 532M。原因是linux下系统缓存的使用会内存优先,当应用程序需要内存时,会自动扔掉缓存给应用程序。
为了方便可以写个bash程序命名mem,内容如下:
echo Mem Used: $(free -m | grep 'Mem:' | awk '{print $3-$6-$7}')M
然后增加可执行权限,mv到/usr/bin/里面。这样以后要想查看内存使用情况,直接在shell中执行mem命令即可。

node.js与nginx并发对比
星期六, 七月 30th, 2011其实没什么要写,主要是对node.js这个东东有点兴趣,从原理上讲,异步的并发应该会比nginx的工人模式要好很多,于是有兴趣做了一下并发测试。
nginx安装后default配置;node.js安装后仅用httpmoudle启用socket监听80返回字符串。
分别用webench进行100/500/600/900线程进行压力测试。测试数据未做详细纪录,略去。
测试结果:
并发能力:node.js基本与nginx持平
cpu占用:node.js高于nginx
mem占用:node.js略高于nginx
此结果不能表明太多问题,相信如果有服务端业务逻辑加入后,node的优势可能会明显。
个人总结:
node适用小型/单一的任务型应用,具备高效率的特性,例如计数器/访问足迹/comment等高并发ajax操作,结合缓存/nosql和队列是个不错的选择;但做完整项目可能略显复杂,容易导致控制流倒置。
bash tips
星期三, 七月 27th, 2011linux bash下忽略大小写,输入一个字母按上下方向键提示以字母开始的历史命令,这个相当给力。同时适用mac os。实在是程序员/码农居家旅行必备⋯⋯
输入:
set show-all-if-ambiguous on
set completion-ignore-case on
"ep": history-search-backward
"e[A": history-search-backward
"e[B": history-search-forward
nginx目录访问密码保护
星期四, 五月 26th, 2011有时候需求这样:某个域名,或域名下的某个目录,需要访问时输入指定的用户名和密码。nginx可以做到,而且一点不比apache差。
78 {
79 listen 80;
80 server_name www.test.com;
81 index index.html index.htm index.php;
82 root /opt/htdocs;
83
84 location / {
85 auth_basic "welcome to www.abcd.com:";
86 auth_basic_user_file htpasswd;
87 gzip off;
88 }
89 }
注意gzip需要关闭,因为会把动态文件解析成静态。
然后需要建立密码文件在conf目录下,名字叫htpasswd,命令如下:
这里的htpasswd为linux下建立pwd的工具,很多参数。上面命令建立一个abcd的用户,密码为123456。
重启nginx,访问该域名即弹出http验证框,错误则提示401。
linux中出现”there are stopped jobs”的解决方案
星期二, 五月 24th, 2011往往是因为有没有正常运行的任务列表导致终端无法退出。解决方案如下:
exit
There are stopped jobs.
[root@DB ~]# jobs
[1]+ Stopped python (wd: /usr/bin)
[root@DB ~]# kill %1
[root@DB ~]# jobs
[1]+ Terminated python (wd: /usr/bin)
[root@DB ~]# exit
linux下实现自动增量备份
星期一, 四月 25th, 2011需求:一台服务器上内容,每天定时备份到远程容灾服务器。为了节省空间和提高传输效率,使用增量备份。
扩展需求:两台服务器实时单向、双向同步某目录下的所有数据。
环境:cent os 5(5.4 5.5 5.6测试通过),系统自带rsync。
1.安装rsync(已经安装可以忽略)
tar xvfz rsync-3.0.7.tar.gz
cd rsync-3.0.7
./configure --prefix=/usr/local/rsync
make && make install
2.配置rsync,创建一个rsyncd.conf文件。
输入以下内容:
gid=nobody
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
[htdocs]
comment= backup htdocs
path=/opt/htdocs/view
ignore errors
read only = yes
host allow = *
host deny=*
secrets file=/etc/rsyncd.passwd
auth users=bakccad
修改:
输入:
执行:
chmod 600 /etc/rsyncd.passwd
3.启动rsync以服务器端方式:
客户端:
客户端无需安装,只需编辑密码文件输入密码:
输入:
执行:
客户端执行以下命令即可完成服务器端到本地的同步:
这里命令中htdocs为服务器端配置的名称。后面路径为保存到的路径。后面是密码文件所在,密码文件只需有密码即可(客户机如果使用user:passwd的形式反而会出现错误)。
vsftpd出现“553 Could not create file”的解决办法
星期四, 三月 31st, 2011vsftpd出现的553 Could not create file,包括503错误,都是权限问题导致的。
这里就要说到linux蛋疼的selinux,如无必要,最好关闭之:
vim /etc/selinux/config
修改:selinux=disabled
关闭了selinux,vsftpd就正常了。
ps:查看linux32位还是64位:file /bin/ls
更改linux主机名的正确方法
星期四, 三月 31st, 2011ssh上服务器后,会显示如下:
[root@uh700047 ~]#
类似的编号,很是影响心情,如何才能改掉@后面的内容呢?
答案是:
1. vim /etc/hosts 加入如下:
127.0.0.1 www.abc.com
2.vim /etc/sysconfig/network
尾行(一定要是尾行)加入:
HOSTNAME www
reboot, done.
关于在 cent os + mrtg 的正确安装方法
星期二, 三月 29th, 2011why mrtg? 显然因为cacti配置麻烦,环境配置繁琐。
安装方法如下:
yum install net-snmp net-snmp-utils mrtg
恩,安装好了。
接着生成配置文件:
==========================================
vim /etc/snmp/snmpd.conf
把第89行前面的注释符号#去掉,变成
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
在62行进行修改:将
access notConfigGroup “” any noauth exact systemview none none
改为
access notConfigGroup “” any noauth exact mib2 none none
===============================================
/usr/bin/cfgmaker public@localhost > /etc/mrtg/mrtg.cfg
接着配置:
vim /etc/mrtg/mrtg.cfg
输入以下:
6 HtmlDir: /opt/mrtg
7 ImageDir: /opt/mrtg
8 LogDir: /var/lib/mrtg
9 ThreshDir: /var/lib/mrtg
10 Target[rl]: 2:public@localhost
11 MaxBytes[rl]: 1250000
12
13 Title[rl]: 流量监测系统
14 Xsize[rl]: 600
15 Options[rl]: gauge, nopercent, growright
再配置crontab:
crontab -e
输入:
*/5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
代表每5分钟收集一次数据显示。
done
以上配置方法在cent os 5.5 64位rhel5.5的64位分别成功。

