Rsync 实现window服务器数据同步备份到Linux服务器

版权声明:原创转载请注明出处,谢谢 https://blog.csdn.net/qq_21108311/article/details/83508934

公司最近window服务器各种磁盘告警,都是老机器了,一时半会也没有新机器来扩容,于是我就想把MySQL的每日全量文件备份到Linux新机器上(别问为啥是每日全量,历史问题);

查询了下方案,大致分为两类:

1、FTP/SSH等方式直接同步;服务端主动推送

2、通过第三方客户端同步,如本次使用的Rsync;客户端主动获取

由于我要实现的是备份,代表着我不仅仅要把数据同步到Linux上,还要把Windows上的数据给删除掉,SSH等方式需要在windows配置定时任务等,考虑到如果有意外发生可能导致数据被主动误删,所以采用了客户端主动获取的方式,使用第三方同步;

关于Rsync,它实现了不仅仅数据同步功能(两个不同主机之间数据的完全同步),还提供了差异化参数的同步设定,如A服务器同步B,若A文件>B,可实现差异化同步到B ;当A<B,若要实现A与B一致,可用delete参数,主动删除掉B上的多余数据;若要实现A同步B后,删除A中磁盘的占用(数据转移),可用remove参数再同步完后自动删除A上的数据;

第三方同步软件比较多,公认比较好的是Rsync,本次分享Rsync如何实现,以及注意事项;

上图就是实现原理,具体表现为:

1、Windows服务器上安装Rsync软件,官网下载即可,和常规Windows软件一样傻瓜式安装,指的注意的一点是:

在安装最后,会要求建立一个账户和密码,作为Rsync管理的账户,必须要设置的,不设置无法运行,所以建立一个账户就行了,对账户授予文件夹的权限(按需授权)。这里和后面的同步账户不一样,是两个不同的账户,后面会做对比;

2、Windows上安装完后对Rsync配置文件进行设置,使得之后Linux客户端的信息能够有正确校验;

3、Linux安装客户端,方法直接yum install就行了

4、Linux上安装完后需要新建一个密码文档,并且授予只能root用户使用的权限,(这部创建和授权是必须的,即使最后我们不经过账户校验也要创建这一步)

5、Linux客户端执行同步命令即可;

关于Windows服务端配置文件,单独拿出来说明:

#不验证用户密码
pid = 0
uid = 0
gid = 0
use chroot = false
strict modes = false
#指定ip链接,*代表不限制
hosts allow = *
#最大链接数
max connections = 5
#日志文件
pid file = rsyncd.pid
log file = rsyncd.log
#端口
port = 873

# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
#备份信息说明,Linux客户端通过这个名字来找服务端数据信息,可以自定义,
#但最后客户端执行命令需要和#这个一致
#可以定义多个备份信息,让不同ip的机子同步不同的数据
[svndata]

#服务端数据存放位置
path = /cygdrive/d/mysqlbackup
#运行链接ip
hosts allow = *
#只读权限,若是打开则只能同步无法删除
read only = false
transfer logging = yes
list = no
lock file = rsyncd.lock

#数据同步校验账户,和Linux客户端进行数据同步的验证使用,当然可以不适用,由于我是在内网,所以没用
#auth users = jf_backup_sync
#同步校验账户的验证密码
#secrets file = /cygdrive/d/Setting/Rsync/rsync_db.ps   

这里需要说明的是:数据同步账户和Windows服务端安装时新建的账户是不一样的;

可以理解是:windows安装的时候新建的账户是管理Rsync这个工具的,

而配置文件中的账户,是校验同步数据的;

所以:要想Rsync工具能够在同步完后删除掉服务端数据,需要给管理账户赋予windows所有权限,若是只同步数据,也要数据可读写权限,所以我们需要对管理账户授予windows权限,一般授予所有权限

同步账户的用户名密码和Linux客户端上的信息应该一致,因为Linux客户端不要求同步账户名,所以要保证的是Linux客户端上的密码要一致;

最后要实现每天自动同步备份,只需要Linux上写个shell脚本,再配置一个定时任务即可;具体安装方式可参考:

https://www.cnblogs.com/kevingrace/p/5972563.html

在Linux上启动可能会有很多报错,最好谷歌下Rsync具体参数意义;

实现服务端同步完后删除文件的参数是:--remove-source-files:

如:

 rsync -av --progress --remove-source-files  --port=873  172.16.**.**::svndata/* /data/win-backup

报错若是报错GID,UID等等,请按照相关报错进行设置=0,我在搭建的时候报错GID错误,百度上全都说UID=0,PID=0,实际上是要加一个GID=0,解决这个问题百度很久没找到,最后去谷歌查了官方文档找到GID报错解决方法;

猜你喜欢

转载自blog.csdn.net/qq_21108311/article/details/83508934