rsync远程同步
rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。
rsync 包括如下的一些特性:
1. 能更新整个目录树和文件系统;
2. 有选择性的保持符号链链、硬链接、文件属性、权限、设备以及时间等;
3. 传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
4. 能用rsh、ssh 或直接端口做为传输端口;
5. 支持匿名rsync 同步文件,是理想的镜像工具;
Rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客机的rsync同步操作的服务器称为备份源。
1、配置SSH备份源:
使用SSH协议的好处是能够基于更安全的远程连接,增强备份的保密性。这种方式的备份源最容易配置,只要确认源文件夹的位置,并准备一个备份操作用户(系统用户)即可
一般使用的参数有:
-a(--archive):归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
-v(--verbose):详细模式输出。
-z(--compress):对备份的文件在传输时进行压缩处理。
-P(--progress):在传输时显示传输过程。
--delete:删除那些DST中SRC没有的文件
--config=FILE:指定其他的配置文件,不使用默认的rsyncd.conf文件
--password-file=FILE 从FILE中得到密码
----------------------------------------------------------
-r,–recursive 对子目录以递归模式处理
-l,--links 表示拷贝链接文件
-p , --perms 表示保持文件原有权限
-t , --times 表示保持文件原有时间
-g , --group 表示保持文件原有属用户组
-o , --owner 表示保持文件原有属主
-D , --devices 表示块设备文件信息
客户机:192.168.198.131 备份源:192.168.198.132
客户机上执行rsync命令实现下行同步
rsync -avzH --delete rget@192.168.198.132:/var/www/html /wwwroot
上行同步SSH备份源:
将客户机中的/usr/share/目录中的内容上传同步到SSH服务器的/var/www/html目录下,由于备份用户rput并非root用户,因此”-g”、”-o”等选 项将无法使用。
rsync -rlvz --delete /usr/share/ rput@192.168.198.132:/var/www/html
在客户机上创建**对,将公钥文件分发给服务器(A ssh B,把A公钥给B)
ssh-****** -t rsa
ssh-copy-id [email protected]192.168.198.132
2、配置rsync备份源:
rsync不仅仅用作远程同步的发起端(客户端),也可以作为守护进程运行,为其他客户机提供备份源,配置rsync备份源需要建立配置文件 rsync.conf,创建备份账户,然后将rsync程序以”- -daemon”选项运行。
rsync配置文件介绍:
全局参数:对整个rsync服务器生效,如果模块参数和全局参数冲突,针对冲突模块的模块参数生效
模块参数:定义需要通过rsync输出的目录定义的参数
创建rsyncd.conf文件:
vim /etc/rsyncd.conf
uid = nobody #指定当该模块传输文件时守护进程应该具有的uid
gid = nobody #指定当该模块传输文件时守护进程应该具有的gid
use chroot = yes
address = 192.168.198.132
port = 873 #默认873
log file = /var/log/rsyncd.log #指定日志文件,而不将日志发送给syslog
pid file = /var/run/rsyncd.pid #存放进程ID的文件位置
hosts allow = 192.168.198.131
# 单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开,
# 整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0
# “*”则表示所有,默认是允许所有主机连接。
# max connections 指定该模块的最大并发连接数量。默认值是0,没有限制。
# lock file 指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock
[wwwroot]
path = /var/www/html #供备份的目录树路径
comment = Document Root of test #给模块指定一个描述
read only = yes
# exclude:指定多个由空格隔开的文件或目录(相对路径)。等同于在命令中使用—exclude
dont compress = *.gz *.bz2 *.tgz *.zip *.tzr *.z
auth users = backuper
# 指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块
secrets file = /etc/rsyncd_users.db
# 只有" auth users" 被定义时,才有用。每行包含一个username:passwd对没有默认的secures file名,注意:文件权限一定要是600,否则客户端将不能连接服务器
Timeout = 600 #超时单位为秒钟,0表示没有超时定义,这也是默认值
基于安全性考虑,对于rsync 的备份源最好仅允许以只读方式做下行同步,若确实需要做上行同步时,建议改用SSH备份源。另外,下行备份可以采用匿名的方式,只要将其中的”auth users”和”secrets file”配置记录去掉就可以了。
为备份账户创建数据文件:
vim /etc/rsyncd_users.db
backuper:123456
chmod 600 /etc/rsyncd_users.db
启动和关闭rsync
rsync --daemon #启动
kill $(cat /var/run/rsyncd.pid) #关闭
注:在iptables防火墙上创建规则允许873端口的通信:
iptables -I INPUT -p tcp --dport 873 -j ACCEPT
将”rsync –daemon”保存到/etc/rc.local文件中,确保系统启动后自动启动rsync服务
echo "rsync --daemon" >> /etc/rc.local
下面使用rsync备份工具实现备份操作
格式1:
rsync 选项 用户名@备份源服务器IP::共享模块名 目标目录
或
格式2:
rsync 选项 rsync://用户名@备份源服务器IP/共享模块名 目标目录
rsync -avzP aaa@qq.com192.168.198.132::wwwroot /wwwroot/
或
rsync -avzH rsync://aaa@qq.com/wwwroot /wwwroot/
上面启动rsync服务程序是通过”rsync –daemon”方式启动rsync服务。考虑到异地备份的特性,通常并不需要全天不间断运行,最好只是在有客户机连接的时候才启用,因此可以将rsync交给超级服务xinetd管理,只要修改相应配置并启动xinetd服务,就可以提供rsync服务了。也就是当xinetd服务接收到客户端的同步请求后,会把rsync同步请求转给rsync程序。
配置方法:
kill $(cat /var/run/rsyncd.pid)
sed -i '6s/yes/no/' /etc/xinetd.d/rsync
#将disable = yes 改为no;确信有- -daemon服务选项
安装并启动xinetd服务
yum install xinetd
service xinetd start
chkconfig xinetd on
转载请务必保留此出处:http://blog.csdn.net/fgf00/article/details/50732731