Centos7使用rsync实现数据备份

rsync是什么

rsync(remote synchronize)是 Liunx/Unix 下的一个远程数据同步工具。它可通过 LAN/WAN 快速同步多台主机间的文件和目录,并适当利用 rsync 算法(差分编码)以减少数据的传输。rsync 算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快。除此之外,rsync 可拷贝、显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。

rsync优点

  • 可以镜像保存整个目录树和文件系统。
  • 可以很容易做到保持原来文件的权限、时间、软硬连接等。
  • 无需特殊权限即可安装。
  • 拥有优化的流程和比较高的文件传输效率。
  • 可以使用shell(rsh、ssh)方式来传输文件。
  • 支持匿名运行。

与 scp 相比,rsync 传输速度绝对远远超过 scp 的传输速度。

运行模式

rsync 有两种常用的认证方式,一种是 rsync-daemon 方式,另外一种是 ssh 方式(类似于 scp)。在平时使用过程,我们使用最多的是 rsync-daemon 方式。

这种模式是基于 C/S 模式的,在这种模式下,rsync 在后台启用了一个守护进程,这个守护进程在 rsync 服务器永久运行,用于接收请求传输文件,因此,客户端既可以把文件推送( push )给守护进程,也可以向守护进程拉取( pull )文件。rsync 的服务器模式非常适合为异地的中心备份服务器或数据异地存储库来使用。

安装rsync

1
2
3
4
5
6
 yum install rsync -y
systemctl start rsyncd.service
systemctl enable rsyncd.service

#检查是否已经成功启动
netstat -lnp|grep 873

服务端配置(10.0.2.15)

配置服务端配置文件和同步规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[ftp] ## 规则名称
path = /data/upload ## 同步目录路径
comment = 规则表述
read only = yes ## pull
write only = no ## push
hosts allow = * ## 允许所有IP
list = no
ignore errors
auth users = backup
secrets file = /etc/rsyncd.pass

配置可以访问的用户身份

1
2
3
4
vim /etc/rsyncd.passwd
backup:123456 #具有拉取数据的账号密码
chmod 600 /etc/rsyncd.pass
systemctl restart rsyncd.service

客户端配置(10.0.2.16)

只需配置密码即可

1
2
3
4
vim /etc/rsyncd.pass
123456
chmod 600 /etc/rsyncd.pass
systemctl restart rsyncd.service

客户端拉取测试

1
rsync -avzu --progress --password-file=/etc/rsyncd.pass backup@10.0.2.15::ftp  /home/www

客户端推送测试

1
rsync -avzu --progress --password-file=/etc/rsyncd.pass  /home/www  backup@10.0.2.15::ftp
  • a是“–archive”归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
  • v是“–verbose”显示详细输出模式
  • z是“–compress”压缩模式
  • u是“–update”只进行更新
  • r是“–recursive”以子目录递归模式
  • l是“–links”保留软链结
  • t是“–times“用来保持文件信息时间
  • o是”–owner“用来保持文件的属主信息
  • p是”–perms“用来保持文件权限
  • g是”–group“用来保持文件的属组
  • D是“–devices”用来保持设备文件信息
  • –progress:用来显示数据镜像同步的过程
  • –delete:指定以rsync服务器为基准进行数据镜像同步,也就是要保持rsync服务器端目录与客户端目录的完全一致(谨慎使用)
  • –exclude=PATTERN 指定排除不需要传输的文件模式
  • –include=PATTERN 指定不排除而需要传输的文件模式
  • –exclude-from=FILE 排除FILE中指定模式的文件
  • –include-from=FILE 不排除FILE指定模式匹配的文件
  • /home/www:用户指定备份文件在客户端机器上的存放路径