一 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 软件安装 B 直接复制,属性未被复制 C 保持属性的复制
rsync -vzrtopg /etc/passwd /tmp/
D 删除 与本地不同的直接删除 数据同步导致用户无法访问网站:
备份: 1 时间的低谷 2 考虑带宽问题 rsync 、scp、ftp 都有限速功能
rsync 拷贝如果不带/,则是拷贝目录和内容,如果带/,则是拷贝目录中的内容,不包含文件名
3 使用SSH通道进行传输
需要知道对方服务器的密码和用户 使用-e参数通过ssh 进行拷贝同步-p 指定ssh的端口,ssh-key的方式进行同步,此时不需要密码。
4 使用进程的方式进行数据的同步
1 需关闭防火墙和selinux
先搭建一个服务器,这个服务器上跑着rsync 的守护进程,使用的端口是873端口,在其他的客户端服务器使用rsync命令实现可以和服务器实现推和拉的动作,但这个实现都是在客户端实现的。 daemon 是搭在备份服务器上的 尽量在客户端直接使用命令最好,备份服务器是主要的
2 创建配置文件
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 创建用户
4 启动进程
其守护进程使用的是root用户启动的,但其客户端访问时需要调用服务器端的rsync用户进行访问
5 创建备份目录并授权
6 创建密码文件 (用户名:密码)
7 添加相应的权限
8 查看端口
9 加入开机自启动
10 客户端配置:
11 创建本地临时备份目录
12 推送至远端,后面的backup是模块名称。
方法二:
5 多模块
其相同的写在模块之上,不同的写入模块:
6 rysnc 优缺点
优点:
1 增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物) 2 远程SHELLL 通道模式可以加密SSH 传输,socket (daemon)需要加密传输,可以利用***服务和ipsec服务。
缺点:
1 大量小文件同步时,比对时间较长,有时候,rsync 进程可能会停止。 2 同步大文件,10G这样的大文件时有时会出现中断。一次性拷贝建议使用scp