首页 > 其他 > 详细

CentOS 7使用rsync实现数据备份

时间:2017-11-21 14:13:19      阅读:6961      评论:0      收藏:1      [点我收藏+]

标签:rsync

一、rsync是什么

    在开始正式学习rsync之前,我们先来回答这个问题:rsync是什么。

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

三、rsync优点

    rsync有以下几个优点:

  • 可以镜像保存整个目录树和文件系统。

  • 可以很容易做到保持原来文件的权限、时间、软硬连接等。

  • 无需特殊权限即可安装。

  • 拥有优化的流程和比较高的文件传输效率。

  • 可以使用shell(rsh、ssh)方式来传输文件。

  • 支持匿名运行。

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

    我们在局域网中经常用rsync和scp传输大量mysql数据库文件,发现rsync传输文件速度至少要比scp快20倍以上。

    所以如果需要在Liunx/Unix服务器之间互传海量数据时,建议选择rsync进行传输。

四、运行模式(服务器)

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

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

案例介绍:

   我们使用pull模式,我们有多个应用的服务器作为服务端,备份服务器作为客户端,备份服务器向每个应用服务器拉取需要备份的数据,放到相应的目录下面。

技术分享图片

五、安装配置rsync

1、安装rsync

    为了简便,我们这里直接使用yum进行安装即可。

yum install rsync -y

2、配置rsync服务端(应用服务器)

    我们有一台云盘的服务器,IP为10.0.2.15,我们在这台服务器上面进行服务端的配置,我们需要备份的路径为/data/nextcloud,首先进行配置文件的设定,我们设置的如下:

# cat /etc/rsyncd.conf

uid = root
gid = root
use chroot = yes
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

[nextcloud]
path = /data/nextcloud
comment = pan.comratings.com
read only = yes
write only = no
hosts allow = 10.0.2.30
list = no
ignore errors
auth users = backup
secrets file = /etc/rsyncd.pass

    增加密码认证文件:

# vim /etc/rsyncd.pass
backup:123456     #具有拉取数据的账号密码
chmod 600 /etc/rsyncd.pass

   启动服务器:

systemctl start rsyncd.service

3、配置rsync客户端(备份服务器)

    配置密码认证文件,这里只需配置密码即可,账号我们会在命令里面指定:

# vim /etc/rsyncd.pass
123456
chmod 600 /etc/rsyncd.pass

4、进行数据拉取测试

    我们在备份服务器上面同样安装rsync,然后进行如下指令进行数据拉取:

rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.pass [email protected]::nextcloud /data/10.0.2.15/nextcloud