关于备份工具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支持用户认证方式传输数据,提升数据同步的安全性。
#往期推荐#
更多精彩内容,“码”上了解!↓
关于备份工具rsync,你不知道的事
本文2024-09-23 01:12:12发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144431.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf