Rsync数据同步服务理解及搭建

一、关于Rsync

1、Rsync简介

  • Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。
  • Rsync软件适用于unix/linux/windows等多种操作系统平台。
  • Rsync英文全称Remote synchronization,从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能。从同步数据的性能及效率上,Rsync工具更胜一筹。

1)一个rsync相当于scp,cp,rm,但是还优于他们每一个命令。传统的cp,scp工具拷贝每次均为完整的拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝的功能.。
2)在同步备份数据时,默认情况下,Rsync通过其独特的“quick check”算法:

  • 它仅同步大小或者最后修改时间发生变化的文件或目录;
  • 也可根据权限,属主等属性的变化同步,但需要指定相应的参数;
  • 甚至可以实现只同步一个文件里有变化的内容部分。
     
    所以,可以实现快速的同步备份数据。

2、Rsync数据同步原理

一边比对差异,一边对差异的部分进行同步。

3、Rsync特性

  • 支持拷贝特殊文件如链接文件,设备等
  • 可以有排除(tar?find?)指定文件或目录同步的功能,相当于打包命令tar的排除功能
  • 可以做到保持原文件或目录的权限,时间,软硬链接,属主,组等属性均不改变-p
  • 可以实现增量同步,即只同步发生变化的数据,因此数据传输效率很高(tar -N)
  • 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)
  • 可以通过socket(进程方式)传输文件和数据(服务端和客户端)
  • 支持匿名或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像

二、语法及参数介绍

  • 语法

SYNOPSIS
       Local:  rsync [OPTION...] SRC... [DEST]

       Access via remote shell:
         Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

       Access via rsync daemon:
         Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]     
               rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]  
         Push: rsync [OPTION...] SRC... [USER@]HOST::DEST    
               rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

语法说明

  • Rsync为同步命令

  • [option]为同步时的参数选项

  • SRC为源,即待拷贝的分区,文件或目录

  • DEST为目的,即要拷贝到的分区,文件或目录

  • 参数

选项 作用
- v,- - verbose 以详细模式输出,即显示传送过程
- z,- - compress 传输时进行压缩以提高传输效率。- - compress-level=n(n为数字,即可以指定压缩级别)
- a,- - archive 归档模式,表示已地柜方式传输文件,并保持所有文件属性
- r,- - recursive 对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r
- t,- - times 保持文件时间信息
- o,- - owner 保持文件属主信息
-g,- - group 保持文件属组信息
- p,- - perms 保持文件权限
- P,- - progress 显示同步过程及传输时的进度等信息
- D,- - devices 保持设备文件信息
- l,- - links 保留软链接
- e 指定信道协议,如 - e “ssh -p 22”
- - bwlimit=RATE 限制传输速率
- - delete 让源与目的同步,保持一致
- - exclude=文件名 排除指定的文件
- - exclude-from=文件的绝对路径 引用一个排除列表,列表里只需要输入排除的文件名即可
  • 实例

#备份/root/ 下的文件到 /tmp/
rsync -avzP /root/ /tmp
#备份/root 到 /tmp/
rsync -avzP /root /tmp
#注意 /root/ 与 /root 的区别
/root/ ---> 将/root/ 下的文件备份
/root  ---> 将/root 目录备份

#将/tmp/ 与 /ect/ 保持同步
rsync -avzlP --delete /etc/ /tmp/

#将 /etc/ 除了yum.repos.d,同步到/tmp/,并限速100M
rsync -avzlP --delete --exclude=yum.repos.d --bwlimit=100  /etc/ /tmp   

#将/tmp/ 以root用户发送到 192.168.139.153客户端下的/backup/  
rsync -avzlP -e "ssh -p 22" /tmp/  [email protected]:/backup/  
(通过ssh方式发送,默认是22端口,根据自己情况指定端口)

#将192.168.139.153客户端下的 /etc/ 拉取到 本地/tmp/下 
rsync -avzlP [email protected]:/etc/ /tmp/  

三、以守护进程(socket)方式传送数据

环境要求:
(1)两台 centos7 机器
(2)网络配置参数

主机名 网卡ens32 用途 代号
Ripe1 192.168.139.152 rsync客户端 client
Ripe2 192.168.139.153 rsync服务端 server

部署操作:

----配置server端

  • 检查并修改配置文件
#检查是否安装rsync
rpm -qa rsync
rsync-3.1.2-10.el7.x86_64
(两台机器都下载)

#修改配置文件 /etc/rsyncd.conf
#配置前先备份配置文件,以防改错,养成好的习惯
cp -p /etc/rsyncd.conf{,.`date "+%F"_bak`}
vim /etc/rsyncd.conf
uid = root  #属主
gid = root  #属组
use chroot = no  #程序安全设置
max connections = 4  #最大连接客户端数
timeout = 300   #连接超时时长,单位秒
pid file = /var/run/rsyncd.pid   #进程号文件位置
lock file = /var/run/rsync/lock  #进程锁文件
---------------------------------------------------
[backup]      #设置节点
path = /backup/  #设置备份目录
ignore errors    #忽略错误
read only = false  #只读(true或false)
list = false    #阻止远程列表(不让通过远程方式看服务端内容)   
hosts allow = 192.168.139.153    #允许IP
hosts deny = 0.0.0.0/24   #禁止IP
auth users = rsync_backup   #虚拟用户
secrets file = /etc/rsync.password  #存放用户和密码文件
  • 创建rsync程序用户并创建共享目录
#创建rsync程序用户
useradd -M -s /sbin/nologin rsync

#查看结果
grep "^rsync" /etc/password 
grep "^rsync" /etc/group

#创建目录
mkdir /backup/
  • 启动rsyncd服务
rsync --daemon
netstat -tanup | grep "rsync"

#关闭方式
pkill rsync
  • 将 /backup/ 文件夹更改属主属组为rsync,并修改权限为755
chown -R rsync:rsync /backup/
chmod -R 755 /backup/
  • 创建rsync虚拟用户和密码,并修改面文件权限
#创建用户和密码
echo "rsync_backup:123456" > /etc/rsync.password  
cat /etc/rsync.password
   rsync_backup:123456
   
#修改权限
chmod 600 /etc/rsync.password

----配置client端

  • 检查是否安装rsync
rpm -qa rsync
  • 创建密码文件,并更改权限为600
echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password

至此server端与client端配置完成

测试

#将client端的指定目录内容推送到server端
rsync -lavzP --bwlimit=100 [email protected]::backup --password-file=/etc/rsync.password  

你可能感兴趣的:(Rsync服务)