关于备份工具rsync,你不知道的事

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:6

关于备份工具rsync,你不知道的事


小编推荐

有效的备份方案是保障系统及数据安全的重要手段,在服务器中,通常会结合计划任务、Shell脚本来执行本地备份。为了进一步提高备份的可靠性,使用异地备份是非常有必要的。比如针对测试站点的同步备份,如果想要实现快速、安全、高效的异地备份,就需要使用rsync


本期,小编就同大家说说rsync的那些事,并带大家快速上手rsync~


图1-rsync异地备份示例




1 rsync是什么


rsync是linux系统下的数据镜像备份工具


  • rsync的“两姐妹”


1)sync同步:刷新文件系统环境,强制将修改过的数据块写入磁盘,并且更新速度超级快

2)async异步:将数据先放到缓冲区,再周期性(一般是30秒)地同步到磁盘。


  • rsync的特点


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

  • 可以保存原有的权限(permission,mode)、owner、group、时间(修改时间,modify time)、软硬链接、文件acl、文件属性(atributes)信息等。

  • 传输效率高,使用同步算法,只比较变化的文件(增量备份),以下述场景为例:

    A服务器上有三个文件file1.txt、file2.txt 、file3.txt,其中file3.txt是新增的;B服务器上有二个文件file1.txt、file2.txt。

    当使用rsync实现A和B服务器之间的数据同步时,B服务器只会同步file3.txt(增量部分)。

  • 支持匿名传输,方便网站镜像;也可以做验证,加强安全。


2 rsync怎么用


步骤一:环境准备


1)关闭防火墙,相关命令如下:


systemctl stop firewalld
systemctl disable firewalld
setenforce 0


2)关闭selinux,相关命令如下:


vim /etc/selinux/config
SELINUX=disabled


3)  更改主机名称,相关命令如下:


hostnamectl set hostname postgresql.kingdeeCosmic.com
hostnamectl set hostname postgresql_backup.kingdeeCosmic.com



4)更改IP地址(静态IP),相关命令如下:


[root@comic-ptest ~] # cat /etc/sysconfig/network-scripts/ifcfg-eth0 
BOOTPROTO=none
DEVICE=eth0
ONBOOT=yes
NM_CONTROLLED=yes
NETMASK=255.255.255.0
IPADDR=172.20.158.180
GATEWAY=172.20.71.1
DNS1=192.168.1.13
DNS2=192.168.1.14


5) 同步网络时间,相关命令如下:


yum -y install ntp ntpdate
ntpdate cn.pool.ntp.org


注:使用linux服务器,需要能访问广域网。


步骤二:软件配置


默认情况下,rsync只是作为一个命令来使用(备注:在查询进程时,找不到对应的服务),但是rsync提供了一种系统服务的实现方式


  • rsync以服务方式启动


rsync对外提供服务流程为:端口监听→启动服务→启动脚本→配置文件。关键步骤如下:


1)启动rsyncd服务(Centos6没有、Centos7有) ,相关命令如下:


systemctl start rsyncd&&ps -ef |grep rsync



rsyncd服务的配置文件为“/etc/rsync.config”,文件参数解析如下图所示:


图2-rsync服务配置文件参数解析



小知识:


如果rsync作为系统服务单独运行,则其底层不需要ssh服务


1. rsync默认依赖ssh访问,当ssh端口变更时,可自定义ssh通信端口,相关命令如下:


rsync -e "ssh -p 22" -av postgresql_bak_20221001.tar.gz root@192.168.10.100:/root


2. rsync ssh免密操作,相关命令如下:


ssh-keygen -t rsa -P ""ssh-copy-id root@192.168.10.100


  • rsync服务访问认证


为确保远程同步安全,需配置密码鉴权策略


1) 服务端配置操作


首先,编辑rsyncd.config,命令如下所示:


auth user = kingdee1,kingdee2 #用户名
secrets file = /etc/rsyncd.secrets #密码文件


rsyncd.secrets文件内容如下:


kingdee1:1234567
kingdee1:1234567



然后,修改密码文件权限并重启rsync服务,如下所示:


chmod 600 /etc/rsyncd.secrets
systemctl restart rsyncd



2) 客户端验证操作,命令如下所示:


rsync -av user1@192.168.10.100::app ./
password   #密码交互


步骤三:远程同步


对于远程文件同步,有以下两种方式:


方式一:Push:上传文件到远程服务端


命令格式为:rsync -av 本地文件或目录 远程服务器名称@远程服务器IP地址:目标路径,示例如下:


rsync -av postgresql_bak_20221001.tar.gz root@192.168.10.100:/opt



方式二:Pull:下载文件到本地服务器端


命令格式为:rsync -av 远程用户名@远程服务器的IP:目标文件或目录 本地存储位置,示例如下:


rsync -av root@192.168.10.100:/opt/postgresql_bak_20221001.tar.gz ./



3 rsync应用案例

3.1 定时同步备份案例


图3-定时同步备份示例


  • 服务端操作


步骤一:创建对应目录;


步骤二:将rsync作为后台程序运行,依次执行下述命令:


1)编辑rsyncd.config,如下所示:


[app]pathc = /opt/postgresql/pg_dataslog file = /var/log/rsync.log


2)启动rsync服务,如下所示:


[app]
pathc = /opt/postgresql/pg_datas
log file = /var/log/rsync.log


3)验证服务成功启动,如下所示:


netstat -tnulp|grep  873



  • 客户端操作


步骤一:创建对应目录;


步骤二:将rsync作为系统服务运行,依次执行下述命令:


1)编辑rsyncd.config,如下所示:


[app]pathc = /opt/postgresql_bak/pg_dataslog file = /var/log/rsync.log


2)重新启动rsyncd服务,如下所示:


systemctl reart rsyncd



3)验证服务是否启动成功,如下所示:


ps -ef |grep rsync
netstat -tnulp|grep  rysnc


步骤三:测试rsync是否可以连接到rsync服务,执行如下命令:


rysnc -a root@192.168.10.100::


其中,“-a” 表示获取rsync服务对应的同步目录标签。若成功连接到rsync服务,则会返回app标签。


步骤四:编写计划任务,测试数据同步是否正常,依次执行如下命令:


1)备份文件shell脚本,如下所示:


#!/bin/bash
sync -av root@192.168.10.100::app /opt/postgresql_bak_/pg_datas &>/dev/null


2)脚本增加可执行权限,如下所示:


chmod +x /opt/rsync_postgresql.sh



3)编写调度计划,如下所示:


crontab -e
15 1 * * * /opt/rsync_postgresql.sh


4)查看调度计划日志,相关命令如下:


tail -fn 100 /var/log/cron


3.2 实时同步备份案例


图4-实时同步备份示例


rsync实时同步需要在服务端安装inotify-tools工具(监视器)。


Inotify是一种强大的、细粒度的异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除、创建、移动等操作,即可以监控文件发生的一切变化。


Inotify源码安装命令如下:


tar zvxf inotify-tools-3.22.6.0.tar.gz 
cd /opt/inotify-tools-3.22.6.0
./rh_build.sh &&make install


安装完成后生成2个命令:


/usr/local/bin/inotifywait    #等待
/usr/local/bin/inotifywatch   #看守


其中,inotifywait可以用来收集有关文件访问信息,Linux发行版一般没有包括这个命令,需要安装inotify-tools。此命令还需要将inotify支持编译入Linux内核,好在大多数Linux发行版都在内核中启用了inotify。


inotifywait主要命令注解如下:


-m:一直监控某个目录,create、delete、modify等行为
-r: 递归,不仅仅监控目录还要监控目录下的文件
-q: 获取操作信息,但是不输出
-e: 哪些行为需要被监控    
     modify:文件被修改    
     delete:文件被删除    
     create:文件被创建    
     attrib:文件属性被修改    
     move:文件被移动


实时同步sync.sh脚本,相关命令如下:


#/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /opt/postgresql/pg_datas | while read events
do
  rsync -a --delete /opt/postgresql/pg_datas /opt/postgresql_bak/pg_datas
  echo "`date +%F %T` 出现事件$events" >> /var/log/rsync.log 2>&1
done



添加可执行权限,相关命令如下:


chmod +x sync.sh




小知识:


如果想让inotify.sh文件一直执行下去,可通过如下命令实现:nohup ./inotify.sh &


相关命令注解如下:

  • &:让inotify.sh在计算机后台运行,可以使用jobs命令查看,kill%编号结束,当我们退出终端时,这个执行会自动结束;

  • nohup:让程序一直在后台运行,即使我们关闭了终端。





1. rsync支持增量同步,只同步变化的数据,提升数据传输效率;

2. rsync支持socket(守护进程方式)传输文件或者目录数据信息;

3. rsync支持用户认证方式传输数据,提升数据同步的安全性。





#往期推荐#


# 浅谈性能测试监控系统,做好关键指标的监控

MySQL数据备份与回档,让数据有“备”无患

手把手教你打造Jmeter压测可视化监控平台

如何使用Jmeter进行压力测试?这篇入门讲解请拿走!


更多精彩内容,“码”上了解!↓


关于备份工具rsync,你不知道的事

小编推荐有效的备份方案是保障系统及数据安全的重要手段,在服务器中,通常会结合计划任务、Shell脚本来执行本地备份。为了进一步提高备份...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息