详解rsync,一款卓越的增量同步工具(一)

详解rsync,一款卓越的增量同步工具(一),第1张

Rsync (remote rsync) 是可以实现 增量备份 的远程(和本地)文件复制工具,目的是实现本地主机和远程主机上的文件同步(包括本地推到远程,远程拉到本地两种同步方式),也可以实现本地不同路径下(不同目录、分区之间)文件的同步,但不能实现远程路径1到远程路径2之间的同步(scp可以实现)。配合计划任务,rsync能实现 定时或周期同步 ;配合inotify或sersync,可以实现触发式的 实时同步

本篇文章主要介绍rsync的使用方法和它常用的功能。

rsync官方网站: https://rsync.samba.org/

不考虑rsync的实现细节,就文件同步而言,涉及了咐猛含源文件和目标文件的概念,还涉及了以哪边文件为同步基准。例如,想让目标主机上的文件和本地文件保持同步,则是以本地文件为同步基准,将本地文件作为源文件推送到目标主机上。反之,如果想让本地主机上的文件和目标主机上的文件保持同步,则目标主机上的文件为同步基准,实现方式是将目标主机上的文件作衡笑为源文件拉取到本地。当然,要保持本地的两个文件相互同步,rsync也一样能实现,这就像Linux中cp命令一样,以本地某文件作为源,另一文件作为目标文件,但请注意,虽然rsync和cp能达到相同的目的,但它们的实现方式是不一样的。

既然是文件同步,在同步过程中必然会涉及到源和目标两文件之间版本控制的问题,例如是否要删除源主机上没有但目标上多出来的文件,目标文件比源文件更新(newer than source)时是否仍要保持同步,遇到软链接时是拷贝软链接本身还是拷贝软链接所指向的文件,目标文件已存在时是否要先对其做个备份等等。

rsync同步过程中由两部分模式组成:决定哪些文件需要同步的检查模式以及文件同步时的同步模式。

(1).检查模式是指按照指定规则来检查哪些文件需要被同步,例如哪些文件是明确被排除不传输的。默认情况下,rsync使用"quick check"算法快速检查源文件和目标文件的大小、mtime(修改时间)是否一致,如果不一致则需要传输。当然,也可以通过在rsync命令行中指定某些选项来改变quick check的检查模式,比如"--size-only"选项表示"quick check"将仅检查文件大小不同的文件作为待传输文件。rsync支持非常多的选知亮项,其中检查模式的自定义性是非常有d性的。

(2).同步模式是指在文件确定要被同步后,在同步过程发生之前要做哪些额外工作。例如上文所说的是否要先删除源主机上没有但目标主机上有的文件,是否要先备份已存在的目标文件,是否要追踪链接文件等额外 *** 作。rsync也提供非常多的选项使得同步模式变得更具d性。

相对来说,为rsync手动指定同步模式的选项更常见一些,只有在有特殊需求时才指定检查模式,因为大多数检查模式选项都可能会影响rsync的性能。

以下是rsync的语法:

由此语法可知,rsync有三种工作方式:

(1).本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式。

(2).本地主机使用远程shell和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式。

(3).本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access via rsync daemon"段的格式。

前两者的本质是通过管道通信,即使是远程shell。而方式(3)则是让远程主机上运行rsync服务,使其监听在一个端口上,等待客户端的连接。

但是,还有第四种工作方式:

(4).通过远程shell也能临时启动一个rsync daemon,这不同于方式(3),它不要求远程主机上事先启动rsync服务,而是临时派生出rsync daemon,它是单用途的一次性daemon,仅用于临时读取daemon的配置文件,当此次rsync同步完成,远程shell启动的rsync daemon进程也会自动消逝。此通信方式的命令行语法格式同"Access via rsync daemon",但要求options部分必须明确指定"--rsh"选项或其短选项"-e"。

如需源码安装,请关注即将发布的《详解Rsync,一款卓越的增量同步工具(二)》

系统环境:

服务器配置:阿里云ECS 11G

*** 作系统:CentOS7.2

rsync 版本:3.1.2

rsync 服务器:rsync-server (10.168.152.72)

rsync 客户端:rsync-client (10.117.217.172)

检查rsync 是否已经安装

若已安装,无需重新安装;若未安装,用以下命令安装:

写入以下配置到该文件:

输入,格式是“用户名:口令”,用户不要求是系统用户

root:pwd123456

输入:

======welcome to synchronize appdata======

如果rsync启动成功,可以看到873端口已经在监听了。

检查rsync 是否已经安装

若已安装,无需重新安装;若未安装,用以下命令安装:

更多同步数据的场景演示,请关注即将发布的《详解Rsync,一款卓越的增量同步工具(二)》

配置文件 rsyncd.conf 由全局配置和若干模块配置组成。配置文件的语法为:

全局参数

在文件中 [module] 之外的所有配置行都是全局参数。当然也可以在全局参数部分定义模块参数,这时该参数的值就是所有模块的默认值。

模块参数

模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:

a. 基本模块参数

b. 模块控制参数

c. 模块文件筛选参数

d. 模块用户认证参数

e. 模块访问控制参数

客户主机列表定义可以是以下形式:

f. 模块日志参数

设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“。

可以使用的日志格式定义符如下所示:

rsync是开源、高速的、可实现本地以及远程,全量以及增量的数据复制(拷贝)工具。

服务端配置

1.关闭防火墙

systemc stop firewalld

systemc disable firewalld

setenforce 0

2.关闭selinux

vim /etc/selinux/config

SELINUX=disabled

3.rsync服务端配置详解(运晌web01“ip 10.160.1.15”)

(1)rsync配置文件详解

cat /etc/rsyncd.conf

rsync_config_______________start

uid = rsync

gid = rsync

use chroot = no

fake super = yes

max connections = 200

timeout = 600

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

ignore errors

read only = false

list = false

hosts allow = 10.160.1.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

[date]

comment = welcome to oldboyedu backup!

path = /date/

(2)创建rsync目录和用户

mkdir /date

useradd rsync

chown -R rsync:rsync

(3)配置rsync密码文件

cat /etc/rsync.password

rsync_backup:oldboy

chmod 600 /etc/rsync.password

4.配置旁纳锋rsync客户端(web02)

配置rsync密码认证文件

方法一:

cat /etc/rsync.password

oldboy

chmod 600 /etc/rsync.password

方法二:

echo ' export RSYNC_PASSWORD=oldboy' >>/etc/bashrc

. /etc/bashrc

5.生产案例

每天晚上00点整在web服务器A(web02)上打包备份网站程序目录并茄迅通过rsync命令推送到服务器B(web01)上备份保留(备份思路可以是先在本地按日期大包,然后再利用rsync推到备份服务器上)

web01脚本

cat /scripts/rsync.sh

mkdir /date/html_ (date +%F)/html_$(date +%F -d "-1day").tar.gz hosts

mkdir /date/md5sum_ (date +%F)/hosts_md5_$(date +%F)

rsync -avz /date/ [email protected]::date --password-file=/etc/rsync.password

web01 定时任务

rsync是一款开源的备份工具,可以在不同主机之间进行同步(windows和Linux之间 Mac和Linux Linux和Linux),可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用。

rsync官方地址: https://rsync.samba.org/

rsync监听端口:873

rsync工作模式:c/s

说明:这里常用的是c/s模式,在两台或多台服务器之间拷贝数据时,一般我们可能会使用scp或wget,这样 *** 作无法保证数据的完整,为了保证数据的一致性,建议使用rsync基于ssh的传输的c/c模式,这样可以保证的一致性。

完全备份简单的说就是:每天对所有的数据进行完全备份。

这种备份策略的好处是:当发生数据丢失的灾难时,直接恢复之前的数据就可以,因为之前备份的数据就是全部的数据,这样对于恢复就方便的多。

这种策略不足之处:首先,由于每天都源乱对所有数据进行完全备份,造成备份的数据大量重复。这些重复的数据占用了大量的磁盘空间,这对用户来说就意味着增加成本。其次,由于需要备份的数据量较大,因此备份所需的时间也就较长。对于那些业务繁忙、备份时间有限的单位来说,选择这种备份策略是不明智的。

增量备份简单说就是:仅备份客户端与服务端差异的部分,也就说第一次是全量备份,之后备份数据只备份当天新的或被修改过的数据进行备份。这样 *** 作就解决了上面的不足的问题。

所有主机推送本地数据至rsync备份服务器,这样会导致数据同步缓慢,服务器比较少的话可誉扰以使用这种方式。

rsync备份服务端拉取所有主机上的数据,这样 *** 作会导致服务端的压力比较大,较少服务器场景下可以使用。雹虚档

适用于单个主机本地之间的数据传输,与本地使用cp命令类似。

具体用法如下:

基于ssh通道传输,类似于使用scp命令。

注意:rsync借助ssh协议同步数据存在一些的缺陷问题,具体问题如下:

具体用法如下:

这个是rsync自带的功能,不使用系统用户,更加安全。

具体用法如下:

rsync命令参数说明

说明:客户端也可以不做任何配置,手动输入密码也是可以的。

1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2018-09-02

2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2018-09-02

3.客户端最后将备份的数据进行推送至备份服务器、

4.客户端每天凌晨1点定时执行该脚本

5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间

1.服务端部署rsync,用于接收客户端推送过来的备份数据

2.服务端需要每天校验客户端推送过来的数据是否完整

3.服务端需要每天校验的结果通知给管理员

4.服务端仅保留6个月的备份数据,其余的全部删除

说明:全网备份的思路就是这样,如果有所不同,自行根据具体情况配置即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8178781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存