rsync远程同步

  Rsync的官方站点位于http://rsync.samba.org
  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同步操作的服务器称为备份源。
rsync远程同步_第1张图片


1、配置SSH备份源:

使用SSH协议的好处是能够基于更安全的远程连接,增强备份的保密性。这种方式的备份源最容易配置,只要确认源文件夹的位置,并准备一个备份操作用户(系统用户)即可
一般使用的参数有:

-a(--archive):归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
-v(--verbose):详细模式输出。
-z(--compress):对备份的文件在传输时进行压缩处理。
-P(--progress):在传输时显示传输过程。
--delete:删除那些DSTSRC没有的文件
--config=FILE:指定其他的配置文件,不使用默认的rsyncd.conf文件
--password-file=FILEFILE中得到密码
----------------------------------------------------------
-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-keygen -t rsa
ssh-copy-id rget@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 backuper@192.168.198.132::wwwroot /wwwroot/
或
rsync -avzH rsync://[email protected]/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

你可能感兴趣的:(Linux运维)