欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

rsync远程同步

程序员文章站 2024-03-21 17:45:04
...

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、配置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-****** -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服务选项
rsync远程同步


安装并启动xinetd服务

yum install xinetd 
service xinetd start
chkconfig xinetd on
rsync远程同步



转载请务必保留此出处:http://blog.csdn.net/fgf00/article/details/50732731

相关标签: rsync 远程同步