当前位置: 首页 > news >正文

Rsync异地备份的使用方式

Rsync数据同步

目录

Rsync数据同步

1.软件安装

2.本地同步

3.远程同步

4.crontab+rsync定时同步

5.inotify+rsync实时同步


与传统的cp、scp、tar等备份方式不同,它可实现增量同步,即只同步发生改变的的数据,因此传输、备份效率更高。

使用场景:

· 借助cron定时任务+Rsync做定时备份同步到备份服务器。

· 也可以Rsync+inotify实现实时同步(但消耗资源较大)

环境:

角色操作系IP
备份服务器Rocky Linux 9.510.1.1.5
数据服务器Ubuntu 22.04.5 LTS10.1.1.3

1.软件安装

查询命令是由哪个软件包提供的

[root@localhost ~]# dnf provides rsync
上次元数据过期检查:23:31:19 前,执行于 2025年03月10日 星期一 14时50分54秒。
rsync-3.2.3-20.el9.x86_64 : A program for synchronizing files over a network
仓库        :baseos
匹配来源:
提供    : rsync = 3.2.3-20.el9rsync-3.2.3-20.el9_5.1.x86_64 : A program for synchronizing files over a network
仓库        :baseos
匹配来源:
提供    : rsync = 3.2.3-20.el9_5.1

安装它:

[root@localhost ~]# dnf -y install rsync-3.2.3-20.el9.x86_64

如果是Ubuntu好像是默认自带的,如果没有应该是用sudo apt-get install rsync命令来安装。

2.本地同步

语法:

同步目录:rsync 选项 本地目录A 本地目录B/ #即同步文件夹A到目录B下面。

同步文件: rsync 选项 本地目录A/ 本地目录B/ #即同步本地目录A下的所有文件夹和文件到本地目录B下面。

常用的选项:

选项作用
-n测试同步过程,不做实际修改,应该是拿来看是需要同步数据大小的。
--delete删除目标路径下多余的文件。
-v显示详细操作信息。
-z传输过程中使用压缩/解压缩。
-a递归同步,同时保留文件属性。

就记住 rsync -avz 源路径 目标路径就可以。

注意:因为它同步会同步文件属性,注意填写路径时特别注意,不然不小心会改文件属性。

3.远程同步

与scp命令一样的,语法格式为:

rsync -avz 同步路径 UserName@IP:/路径

例:guojie@guojie:~$ rsync -avz /home/guojie/testA root@10.1.1.5:/root/

注意:需要两边都安装上rsync

4.crontab+rsync定时同步

被同步的服务器上做免密登录:

# 生成密码
guojie@guojie:~$ ssh-keygen -t rsa# 把密钥拷贝到备份服务器上
guojie@guojie:~$ ssh-copy-id root@10.1.1.5# 测试是否能免密登录
guojie@guojie:~$ ssh root@10.1.1.5
Last login: Tue Mar 11 13:39:57 2025 from 10.1.1.254
[root@localhost ~]# 

添加定时任务:

# 查找命令所在路径
guojie@guojie:~$ whereis rsync
rsync: /usr/bin/rsync /usr/share/rsync /usr/share/man/man1/rsync.1.gz# 测试同步命令是否正常
guojie@guojie:~$ /usr/bin/rsync -avz /home/guojie/testA root@10.1.1.5:/root/ 
sending incremental file list
testA/
testA/1.txt
testA/root@10.1.1.5/
testA/root@10.1.1.5/1.txtsent 242 bytes  received 66 bytes  205.33 bytes/sec
total size is 0  speedup is 0.00

把命令写入定时任务(这里是每天0点执行,把当前主机/home/guojie/testA的文件同步到目标主机的/root下面):

guojie@guojie:~$ crontab -e
0 0 * * * /usr/bin/rsync -avz /home/guojie/testA root@10.1.1.5:/root/ >> /var/log/rsync.log 2>&1

给它新建日志文件,这里我用了普通用户,建议大家还是用root用户吧,好像不太方便:

guojie@guojie:~$ sudo touch /var/log/rsync.log
guojie@guojie:~$ sudo chown guojie.guojie rsync.log

由于同步间隔较长,不好验证同步是否成功,你可以先把定时任务改成一分钟一次,这里可以看见任务执行日志均正常:

guojie@guojie:~$ crontab -l
* * * * * /usr/bin/rsync -avz /home/guojie/testA root@10.1.1.5:/root/ >> /var/log/rsync.log 2>&1guojie@guojie:~$ cat /var/log/rsync.log 
sending incremental file list
testA/
testA/1.txt
testA/2.txt
testA/3.txt
testA/4.txtsent 334 bytes  received 96 bytes  860.00 bytes/sec
total size is 17  speedup is 0.04
sending incremental file list
testA/sent 158 bytes  received 20 bytes  118.67 bytes/sec
total size is 17  speedup is 0.10
sending incremental file list
testA/
testA/5.txt
testA/6.txtsent 280 bytes  received 58 bytes  676.00 bytes/sec
total size is 17  speedup is 0.05
sending incremental file listsent 201 bytes  received 17 bytes  436.00 bytes/sec
total size is 17  speedup is 0.08
sending incremental file list

5.inotify+rsync实时同步

inotify是一款开源的文件监控软件,它可以监控文件的变化并联动rsync达到实时同步的效果。

inotify官网:inotify-tools - Browse Files at SourceForge.net

image-20250311162627354

下载并上传软件到被同步服务器:

guojie@guojie:~$ ls -l
total 388
-rw-rw-r-- 1 guojie guojie 389473 Mar 11 08:17 inotify-tools-3.13.tar.gz
drwxrwxr-x 2 guojie guojie   4096 Mar 11 08:05 testA# 解压
guojie@guojie:~$ tar -zxvf inotify-tools-3.13.tar.gz
guojie@guojie:~$ cd inotify-tools-3.13/# 编译安装
guojie@guojie:~/inotify-tools-3.13$ ./configure   # 这里没有安装gcc编译环境会报错,先安装
guojie@guojie:~/inotify-tools-3.13$ sudo apt-get install -y gcc #如果是Redhat系列是yum -y install gcc-c++
guojie@guojie:~/inotify-tools-3.13$ ./configure #再来一次,没问题
guojie@guojie:~/inotify-tools-3.13$ sudo make && make install  # 这里又提示没有make命令,还要安装它
guojie@guojie:~/inotify-tools-3.13$ sudo apt-get install -y make #安装make
guojie@guojie:~/inotify-tools-3.13$ sudo make && make install # 再来,到这里就安装成功了,安装到了/usr/local/inotify
guojie@guojie:~$ ls /usr/local/inotify/
bin  include  lib  share

它的监控命令就是inotifywait:

image-20250311165104026

使用方法,可以写个死循环脚本一直监听文件

guojie@guojie:~$ cat rsync.sh 
#!/bin/bash
while inotifywait -rq -e modify,create,delete,attrib /home/guojie/testA/
dorsync -avz /home/guojie/testA/ root@10.1.1.5:/root/testA/ >> /var/log/rsync.log 2>&1
done

inotifywait参数详解:

- -r :递归监控,包括子目录。
- -q:静默模式,减少输出信息。
- -e:指定监控模式,包括文件内容被修改(modify)、文件被创建(create)、文件被删除(delete)、文件元数据被修改(attrib)

再执行它:

guojie@guojie:~$ sh rsync.sh &      # 后台执行

测试OKK,正常。删除操作并不会同步,如果删除也要同步rsync命令就要添加--delete参数。

http://www.lqws.cn/news/458767.html

相关文章:

  • 网络编程简介与Netty实战:从入门到高性能Echo服务器
  • Node.js 在前端开发中的作用与 npm 的核心理解
  • FPGA基础 -- Verilog 的值变转储文件(VCD:Value Change Dump)
  • Spring Boot + MyBatis + Vue:全栈开发中的最佳实践
  • 压铸件超声波清洗设备有哪些常见的故障原因?
  • Android Kotlin 用法对比Java使用小结
  • 阿里云OSS对象云储存入门操作
  • 前端工程结构设计指南:如何让模块解耦、易维护、可拓展
  • 讯方“教学有方”平台获华为昇腾应用开发技术认证!
  • Linux系统时间不对导致mysql初始化失败:Data Dictionary initialization failed.(数据字典版本验证失败)
  • 【案例分享】如何用 DHTMLX Scheduler 构建灵活高效的资源调度系统?
  • Vue 比较两个数组对象,页面展示差异数据值
  • 1.22Node.js 中操作 Redis
  • 党建赋能 医校协同|广州附医华南医院与湖南中医药高等专科学校签约携手共育英才
  • Unity3D仿星露谷物语开发67之创建新的NPC
  • HTTP Server
  • 基于RISV-V的矿业网关,支持矿鸿等国产系统
  • 树莓派倾斜传感器实验指导书
  • 为什么你的vue项目连接不到后端
  • Linux 内核同步管理全解:原理 + 实战 + 考点
  • 【服务器R环境架构】基于 micromamba下载 R 库包
  • 企业实践 | 银河麒麟KylinOS-V10(SP3)高级服务器操作系统基础安装指南
  • 无人机吊舱热成像伪彩模式设计分析
  • Hadoop 技术生态体系
  • 如何填写“appium inspector”内容?
  • RAG工程落地:处理文档中表格数据
  • “地标界爱马仕”再启:世酒中菜联袂陈汇堂共筑新会陈皮顶奢产业
  • @annotation:Spring AOP 的“精准定位器“
  • 【MySQL数据库 | 第八篇】DQL语句 - 基础/条件查询
  • 20250620在荣品的PRO-RK3566开发板的Android13系统的uboot阶段就拉高GPIO2C6【driver模式】