用rsync对网站进行镜像备份
1 所需文件
rsync安装程序,rsync-3.0.2.tar.gz
rsync的官方网站下载:http://www.samba.org/ftp/rsync/
2 解压
# tar -xzpvf rsync-3.0.2.tar.gz
3 编译安装
# cd rsync-3.0.2/
# ./configure --prefix=/usr/local/rsync (设定安装目录,这里的安装目录为/usr/local/rsync)
# make
# make install
现在就有rsync命令可以用了,rsync命令放在/usr/local/rsync/bin。用rsync命令可以去运行有rsync服务的服务器上抓取资料。如果要把当前的机器变成一台rsync服务器的话,就需要继续进行一些配置了。
启动服务:# /usr/local/hzcms/rsync/bin/rsync --daemon
二、配置server端的/etc/rsyncd.conf文件
这个文件,在RHAS4中是不存在的,需要创建,内容如下(注意注意事项的第一项):
uid = root #可以使用任意权限去运行rsync,不过要确保对相应目录的操作权限
gid = root #在这里我用的是root 注意注意事项的第二项
use chroot = no # 不使用chroot
max connections = 4 # 最大连接数为4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log # 日志记录文件
[www] # 这里是认证的模块名,在client端需要指定
path = /home/htdocs # 需要做镜像的目录
comment =www.admin99.net #这个没多大关系
#ignore errors # 可以忽略一些无关的IO错误,这个总是在日志中报错,我把它注释掉了
read nly = yes # 只读
list = no # 不允许列文件
auth users = rsync # 认证的用户名,如果没有这行,则表明是匿名
secrets file = /etc/rsync.passwd # 认证文件名
三、在server端生成一个密码文件/etc/rsync.passwd
格式很简单,用户名:密码,内容如下(注意注意事项第一项):
rsync:admin99
文件的属性必需是只有属主可读。
四、在server端将rsync以守护进程形式启动
rsync --daemon
如果要在启动时把服务起来,有几种不同的方法,比如:
a、加入inetd.conf
编辑/etc/services,加入rsync 873/tcp,指定rsync的服务端口是873
编加/etc/inetd.conf,加入rsync stream tcp nowait root /bin/rsync rsync --daemon
b、加入rc.local
在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时rsync --daemon加载进去。
五、创建客户端的密码文件
密码文件中仅仅包含密码即可,内容如下:
admin99
密码要与server端设置的密码一致,注意文件的权限,仅属主可读
六、从client端进行测试
下面这个命令行中-vzrtopglq里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。--progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。后面的rsync@ip中,rsync是指定密码文件中的用户名,之后的::www这一www是模块名,也就是在/etc/rsyncd.conf中自定义的名称。最后的/home1/mirror-www/htdocs/是备份到本地的目录名。在这里面,还可以用-e ssh的参数建立起加密的连接。可以用--password-file=/etc/rsync/www来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。l是把链接也同步复制,q是安静模式
七、修改/etc/crontab做好定时
crontab -e
1,11,21,31,41,51 * * * * root /usr/local/rsync/bin/rsync -vzrtopglq --size-only --progress --delete --password-file=/etc/rsync.passwd rsync@serverip::www /usr/local/hzcms/web/
查看是否成功:crontab -l
重启cron服务:service crond restart
八、注意事项
1、配置文件中不要有空行
行尾不要有空格
把例子中的注释也去掉
2、权限问题
密码文件要设置成仅有属主可读(不管是server端还是client端)
确保rsync有对/var/log的写权限(如果以较低的权限运行rsync的话)
确保rsync对要备份的目录具有相应的权限