1 什么是Rsync?
Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。
2 Rsync的特性如下:
- 支持拷贝特殊文件如链接文件,设备等
- 可以有排除(tar?find?)指定文件或目录同步的功能,相当于打包命令tar的排除功能
- 可以做到保持原文件或目录的权限,时间,软硬链接,属主,组等属性均不改变-p
- 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)
- 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)
- 可以通过socket(进程方式)传输文件和数据(服务端和客户端)
- 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像
-
3 Rsync一共几种模式?
- 单个主机本地之间的数据传输(此时类似于cp命令的功能)
- 借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)
- 以守护进程(socket)的方式传输数据(这个是rsync自身的重要功能)
- 4 rsync 命令常用参数选项说明:
- -v,--verbose 详细模式输出,传输时的进度等信息
- -z,--compress 传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩。
-
-a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgD1(字母1)
-r,--recursive
对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r
-t,--times
保持文件时间信息
-o,--owner
保持文件属主信息
-p,--perms
保持文件权限
-g,--group
保持文件属组信息
-P,--progress
显示同步的过程及传输时的进度等信息
-D,--devices
保持设备文件信息
-l,--links
保留软链接
-e,--rsh=COMMAND
使用的信道协议(remote shell),指定替代rsh的shell程序。例如:ssh --exclude=PATTERN 指定排除不需要传输的文件模式(和tar参数一样)
--bwlimit=RATE
limit socket I/O bandwidth
二, 开始部署rsync服务--Rsync服务器端A-Server操作过程:
1. 配置rsyncd.conf
首先确认软件是否安装:(which rsync)
-
没有就安装 : rpm -qa rsync
-
然后创建rsyncd.conf文件,并添加如下内容(文件默认不存在)
- uid = rsync# (用户)
-
. gid = rsync# (组)
. use chroot = no# 程序安全设置
. max connections = 200. # 客户端连接数
. timeout = 300 # 超时时间
. pid file = /var/run/rsyncd.pid# 进程号文件位置
. lock file = /var/run/rsync.lock# 进程锁
. log file = /var/log/rsyncd.log# 日志文件位置
. [backup]
path = /backup/ # 使用目录
. ignore errors # 有错误时忽略
-
. read only = false#可读可写(true或false)
. list=false# 阻止远程列表(不让通过远程方式看服务端有啥)
. hosts allow = 192.168.232.0/24#允许IP
. hosts deny = 0.0.0.0/32 #禁止IP
-
. auth users = rsync_backup # 虚拟用户
secrets file = /etc/rsync.password#存放用户和密码的文件
-
rsyncd.conf参数
参数说明
uid=rsync
rsync使用的用户。
gid=rsync
rsync使用的用户组(用户所在的组)
use chroot=no
如果为true,daemon会在客户端传输文件前“chroot to the path”。这是一种安全配置,因为我们大多数都在内网,所以不配也没关系
max connections=200
设置最大连接数,默认0,意思无限制,负值为关闭这个模块
timeout=400
默认为0,表示no timeout,建议300-600(5-10分钟)
pid file
rsync daemon启动后将其进程pid写入此文件。如果这个文件存在,rsync不会覆盖该文件,而是会终止
lock file
指定lock文件用来支持“max connections”参数,使得总连接数不会超过限制
log file
不设或者设置错误,rsync会使用rsyslog输出相关日志信息
ignore errors
忽略I/O错误
read only=false
指定客户端是否可以上传文件,默认对所有模块为true
list=false
是否允许客户端可以查看可用模块列表,默认为可以
hosts allow
指定可以联系的客户端主机名或和ip地址或地址段,默认情况没有此参数,即都可以连接
hosts deny
指定不可以联系的客户端主机名或ip地址或地址段,默认情况没有此参数,即都可以连接
auth users
指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要在本地系统中存在。默认为所有用户无密码访问
secrets file
指定用户名和密码存放的文件,格式;用户名;密码,密码不超过8位
[backup]
这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护
path
这个模块中,daemon使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题
-
1. 案例:某DBA做数据同步,带宽占满,导致用户无法访问网站。
rsync -avz dbfile 10.0.0.41:/backup #没有给带宽做限制
rsync -avz --bwlimit=100 dbfile 172.16.1.41:/backup #限定了带宽
-
1. 创建共享目录及添加rsync程序用户
-
useradd -M -s /sbin/nologin rsync #创建rsync用户
2 启动服务:
-
rsync --daemon
3 将A-Server上的/backup文件夹更改属主rsync
- chown -R rsync /backup
-
4 创建rsync虚拟账户名和密码
- echo "rsync_backup:123456" >/etc/rsync.password
-
5 将账户密码文件的权限设置为600(必须否则失败)
- chmod 600 /etc/rsync.password
- 6 加入开机启动
- echo "rsync --daemon" >> /etc/rc.local
-
开始部署rsync服务--Rsync客户端B-Server
-
1 只需要创建密码文件 echo "123456" > /etc/rsync.password
-
2 将密码文件的权限设置为600(必须否则失败) chmod 600 /etc/rsync.password
-
Rsync 优缺点
1. rsync优点:
1,增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)。
2,远程SHELL通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务2.rsync缺点:
1,大量小文件时候同步的时候,比对时间较长,有的时候,同步过程中,rsync进程可能会停止,僵死了。
2,同步大文件,10G这样的大文件有时也会出问题,中断。未完整同步前,是隐藏文件,可以通过续传(--partial)等参数实现传输
3,一次性远程拷贝可以用scp,大量小文件要打成一个包再拷贝。(重要) -