一 rsync 简介

1 定义

官网:https://www.samba.org/ftp/rsync/rsync.html
是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具,适用于unix/linux/windos(中文字符,效率不高)

rsync 英文全称:remote synchronization,rsync 基本本地两个目录之间的拷贝,核心应用是两台主机之间的数据迁移,类似于ssh中的scp,但scp 每次进行的是全量拷贝,而rsync之间是增量拷贝,同样cp也是全量拷贝,rsync是增量拷贝,同时具有删除文件和目录的功能,又相当于rm的命令。
在同步备份数据时,默认情况下,仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化同步,但是需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分。
centos5,rsync2.x 比对方法: 把所有文件比对以便,然后进行同步。
centos6,rsync3.x 比对方法: 一边比对差异,一边对差异的部分进行同步。

2 特性

1 支持拷贝特殊文件,如链接文件,设备等
2 可以做排除拷贝功能
3 备份时可以保证文件的属性不变
4 可以实现增量同步
5 可以通过rcp,rsh,ssh 等方式配合传输文件(本身不对数据加密)
6 通过启动进程进行数据同步
7 支持匿名或认证的进程模式传输,可以实现方便安全的进行数据备份及镜像。

3 工作场景介绍

1 定时备份
cron+rsync
2 实时数据同步
inotify+ rsync

4 rsync 的工作模式

1 local 相当于cp
2 通过ssh 进行远程传输,可以加密
3 通过一个进程进行数据的备份传输
rsync 端口873(服务端) 推和拉都是客户端的命令

二 rsync 实战

1 参数详解

参数 含义 参数说明
-v --verbose 详细模式输出,传输时的进度等消息
-z --compress 传输时进行压缩以提高效率,--compress-level=NUM 可按级别压缩
-a --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDI
-r --resursive 对子目录以递归模式,及目录下面的所有目录都同样传输
-t --times 保持文件时间信息
-o --owner 保持文件属主信息
-p --perms 保持文件权限
-g --group 保持文件属组信息
-P --progress 显示同步的过程及传输时的进度等信息
-D --devices 保持设备文件信息
-l --links 保留软连接
-e --rsh=COMMAND 使用的信道协议,指定代替rsh的shell程序,如ssh

--exclude=PATTERN 指定排除不需要传输的文件模式
--exclude-from =file (文件名所在的目录文件)
--bwlimit=RATE limit socket I/O bandwidth(字节为单位)
--delete 让目标目录SRC和源目录数据DST一致

2 本地

A 软件安装
rsync
B 直接复制,属性未被复制
rsync
C 保持属性的复制
rsync

rsync -vzrtopg /etc/passwd /tmp/

D 删除
与本地不同的直接删除
rsync
数据同步导致用户无法访问网站:

备份:
1 时间的低谷
2 考虑带宽问题
rsync 、scp、ftp 都有限速功能

rsync 拷贝如果不带/,则是拷贝目录和内容,如果带/,则是拷贝目录中的内容,不包含文件名

3 使用SSH通道进行传输

需要知道对方服务器的密码和用户
使用-e参数通过ssh 进行拷贝同步-p 指定ssh的端口,ssh-key的方式进行同步,此时不需要密码。
rsync
rsync

4 使用进程的方式进行数据的同步

1 需关闭防火墙和selinux

先搭建一个服务器,这个服务器上跑着rsync 的守护进程,使用的端口是873端口,在其他的客户端服务器使用rsync命令实现可以和服务器实现推和拉的动作,但这个实现都是在客户端实现的。
daemon 是搭在备份服务器上的
尽量在客户端直接使用命令最好,备份服务器是主要的

2 创建配置文件

rsync
rsync

uid = rsync #用户ID
gid = rsync #组ID
use chroot = no
max connections = 200 #最大链接数
timeout = 300 #超时参数
pid file = /var/run/rsyncd.pid #进程号对应PID
lock file = /var/run/rsync.lock #锁文件,防止数据不一致
log file=/var/log/rsyncd.log #日志文件
[backup] #模块
path = /backup #提供访问的目录
ignore errors #忽略错误
read only = false #可写
list = false # 不能使用ls 和 ll等列表命令
hosts allow = 192.168.1.0/24 #允许那些链接
hosts deny = 0.0.0.0/32 #拒绝那些链接 允许和拒绝二选一
secrets file = /etc/rsync.password # 允许链接的虚拟用户

3 创建用户

rsync

4 启动进程

其守护进程使用的是root用户启动的,但其客户端访问时需要调用服务器端的rsync用户进行访问
rsync

5 创建备份目录并授权

rsync

6 创建密码文件 (用户名:密码)

rsync
rsync

7 添加相应的权限

rsync

8 查看端口

rsync

9 加入开机自启动

rsync

10 客户端配置:

rsync
rsync
rsync

11 创建本地临时备份目录

rsync

12 推送至远端,后面的backup是模块名称。

rsync

rsync

方法二:
rsync

rsync

5 多模块

其相同的写在模块之上,不同的写入模块:
rsync
rsync
rsync
rsync
rsync

6 rysnc 优缺点

优点:

1 增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)
2 远程SHELLL 通道模式可以加密SSH 传输,socket (daemon)需要加密传输,可以利用***服务和ipsec服务。

缺点:

1 大量小文件同步时,比对时间较长,有时候,rsync 进程可能会停止。
2 同步大文件,10G这样的大文件时有时会出现中断。一次性拷贝建议使用scp