1. rsync介绍: 是unix系统下的数据镜像备份工具-remote sync
2. 特性:
a.可以镜像保存整个目录树和文件系统
b.可以很容易做到保持原来文件的权限、时间、软硬链接等等
c.快速:第一次同步时rsync会复制全部内容,之后会备份差异文件,rsync可以实行压缩及解压缩操作,可以减少宽带的使用
d.安全:可以使用scp 、ssh方式传输,当然也可以通过socket
e.支持匿名传输,可以网站镜像
一、服务端配置
#yum -y install xinetd
#vi /etc/xinetd.d/rsync
将如下代码
service rsync
{
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = -daemon
log_no_failure += USERID
}
中的disable = yes 改成 disable = no
然后启动xinetd
#/etc/init.d/xinetd restart
注意:如果服务器上装有防火培记得要打开端口,默认端口是873
# telnet 127.0.0.1 873
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
# iptables -A INPUT -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 873 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 873 -j DROP
# vi /etc/rsyncd.conf(如果没有可以自已创建)
uid=root
gid=root
use chroot=no #不使用chroot
max connections = 20 #最大连接数
secret file=/etc/rsyncd.secrets #密码文件位置,认证文件设置,设置用户名和密码
log file = /var/log/rsyncd.log #指定rsync的日志文件,而不将日志发给SYSLOG
pid file = /var/run/sysncd.pid #指定rsync的pid文件
lock file = /var/run/rsync.lock #指定支持max connections 参数的锁文件,默认值是/var/cun/rsyncd.lock
comment = hello world
[backup] 认证的模块名,在client端需要指定
path = /data/app/www #需要做镜像的目录
auth users = userrsyncone,userrsynctwo #授权帐号,认证的用户名如果没有则匿名,多个用户可以用逗号分开
read only = no $yes 只读值为NO的意思为可读可写模式
hosts allow = 192.168.3.128 允许访问的服务器IP
hosts deny = * #黑名单
list = true #允放列文件
#vi /etc/rsyncd.secrets (设置访问认证的用户密码)
userrsyncone:123456
userrsynctwo:123456
给文件正确的权限
#chown root:root /etc/rsyncd.secrets
#chmod 600 /etc/rsyncd.secrets (必须是600)
二、client 端进行同步
客户端默认好像已经装了rsync,没有的话装下:
#yum -y install rsync
配置:
#vi /etc/rsyncd.pas
加入密码
123456
注:客户端的密码文件只需要密码,而不需要用户名!
更改文件权限
#chmod 0600 /etc/rsyncd.pas
#rsync -vzrtopgu --progress --delete --password-file=/etc/rsync.pas userrsyncone@*.*.*.*::backup /wwww/
命令说明:
-vzrtopg里的v是verbose
z是压缩传输
r是recursive
topg是保持文件原有属性如属主、时间参数
u是只同步已纪更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器的时针的同步
--progress是指显示详细的进度情况
--delete 是指如果服务器端删除了这一文件,客户端也也会删除相应的文件,保持一致
--password-file=/etc/rsync.pas来指定密码文件,这样无需在同步中使用密码了,需要注意的是这个文件属性要设为属主可读
userrsyncone@*.*.*.*::backup /www/ backup模块名,也就是在/etc/rsyncd.conf自定义的名称,userrsyncone是同步的用户名
执行异步同步操作将服务器端文件同步到客户端
#/usr/bin/rsync -avz --progress userrsyncone@42.96.141.41::backup /www
可将同步代码放到crontab
将本地代码同步到服务器上
#rsync -avzuCP --exclude-from=/data/app/www/manual/exclude.list /data/app/www/manual/ userrsyncone@42.96.141.41::backup --progress --password-file=/etc/rsyncd.pas
--exclude-from=/data/app/www/manual/exclude.list :排除不同步的文件列表如下图所示, 为了避免错误最好使用绝对路径
这里也可以写成--exclude 'source' 这个是文件夹的名称也可以直接使用文件名称但是这种写法只能使用相对路径
/data/app/www/manual/:本地的文件夹
userrsyncone@42.96.141.41::backup 授权用户名userrsyncone 见服务端配置,backup是模块名
--password-file=/etc/rsyncd.pas 指定交互密码的可读文件路径