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

rsync 工具

rsync 工具

一、rsync 简介

rsync 是 Linux 系统下的数据镜像备份工具,可实现快速增量备份。支持本地复制,也能与其他 SSH、rsync 主机远程同步,具备安全、高效、灵活等特性。

二、rsync 特性

  1. 全面镜像:可镜像保存整个目录树和文件系统。
  2. 属性保留:轻松保持原文件权限、时间、软硬链接等。
  3. 易安装性:无须特殊权限即可完成安装 。
  4. 高效传输:首次全量复制,后续仅传修改文件;传输中支持压缩解压缩,节省带宽 。
  5. 安全多样:支持 scp、ssh 等传输方式,也可直接 socket 连接 。
  6. 匿名传输:支持匿名传输,便于网站镜像场景。

三、rsync 常用命令与格式

(一)常用参数

参数

含义

-a, --archive

归档,递归传输文件并保持所有属性

-v, --verbose

显示详细信息,如文件列表、数量等

-q, --quiet

不显示打印信息

-r, --recursive

递归传输,传目录时必选

-p, --perms

保持原有权限属性

-z, --compress

传输时压缩,节省带宽、加快速度

--delete

删除目标端源端没有的文件,同步源端删除操作

(二)命令格式

  1. 本地复制:rsync [OPTION]... SRC DEST,SRC、DEST 无冒号分隔,如[root@sl1 ~]# rsync -a a afile 。
  2. 本地→远程:rsync [OPTION]... SRC [USER@]HOST:DEST,DEST 含冒号,如[root@sl1 ~]# rsync -avz a root@192.168.100.30:/tmp/b 。
  3. 远程→本地:rsync [OPTION]... [USER@]HOST:SRC DEST,如[root@sl1 ~]# rsync -avz root@192.168.100.30:/tmp/file1 /tmp/ 。

四、rsync 基础应用实践(以 CentOS7 环境为例)

环境准备

关闭防火墙和 SELinux,确保源、目标服务器网络互通,查看并安装 rsync([root@sl1 ~]# yum -y install rsync )。

(一)本地复制示例

# 清理/tmp,创建测试文件[root@sl1 ~]# rm -rf /tmp/*[root@sl1 ~]# touch /tmp/a# 本地复制[root@sl1 ~]# rsync -a /tmp/a /tmp/afile[root@sl1 tmp]# lsa  afile

执行后,/tmp 目录下会新增 afile 文件,与 a 文件内容一致。

(二)远程同步示例(本地→远程)

# 从本地向192.168.100.30服务器同步文件[root@sl1 ~]# rsync -avz /tmp/a root@192.168.100.30:/tmp/b

登录 192.168.100.30 ,可在 /tmp 目录看到 b 文件。

[root@sl2 tmp]# lsb

(三)远程同步示例(远程→本地)

# 在192.168.100.30创建测试文件[root@sl2 ~]# touch /tmp/file1# 从192.168.100.30同步到本地/tmp[root@sl1 ~]# rsync -avz root@192.168.100.30:/tmp/file1 /tmp/

执行后,本地 /tmp 目录会出现 file1 文件。

[root@sl1 tmp]# lsa afile file1

五、rsync + inotify-tools 实时同步方案

(一)组合优势

rsync 可增量同步,但扫描大量文件耗时;inotify 是 Linux 内核文件系统事件监控机制,能实时捕捉文件增删改等操作。二者结合可实现 实时、高效 数据同步,解决 rsync 定时同步的延迟问题。

(二)环境准备(源服务器:192.168.100.20;目标服务器:192.168.100.30 )

  1. 时钟同步(可选但推荐)

  • 目标服务器(192.168.100.30 )同步时间:
[root@sl2 ~]# vim /etc/chrony.conf# 注释原有,添加server 192.168.100.20 iburst[root@sl2 ~]# systemctl restart chronyd && systemctl enable chronyd[root@sl2 ~]# hwclock -w
  • 源服务器(192.168.100.20 )配置 chrony 作为时间源:
[root@sl1 ~]# vim /etc/chrony.conf# 添加local stratum 10[root@sl1 ~]# systemctl restart chronyd && systemctl enable chronyd[root@sl1 ~]# hwclock -w

      2.目标服务器 rsync 配置

  • 编辑 rsync 主配置文件:
[root@sl2 ~]# vim /etc/rsyncd.conf# 添加内容log file = /var/log/rsyncd.log    # 日志文件位置,启动rsync后自动产生这个文件,无需提前创建pidfile = /var/run/rsyncd.pid     # pid文件的存放位置lock file = /var/run/rsync.lock   # 支持max connections参数的锁文件secrets file = /etc/rsync.pass    # 用户认证配置文件,里面保存用户名称和密码,必须手动创建这个文件[etc_from_client]     # 自定义同步名称path = /tmp/          # rsync服务端数据存放路径,客户端的数据将同步至此目录comment = sync etc from clientuid = root        # 设置rsync运行权限为rootgid = root        # 设置rsync运行权限为rootport = 873        # 默认端口ignore errors     # 表示出现错误忽略错误use chroot = no       # 默认为true,修改为no,增加对目录文件软连接的备份read only = no    # 设置rsync服务端为读写权限list = no     # 不显示rsync服务端资源列表max connections = 200     # 最大连接数timeout = 600     # 设置超时时间auth users = admin        # 执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开hosts allow = 192.168.100.10   # 允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开hosts deny = 192.168.1.1      # 禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
  • 创建用户认证文件并设置权限:
[root@sl1 ~]# vim /etc/rsync.pass# 添加(格式:用户名:密码)admin:123456[root@sl1 ~]# chmod 600 /etc/rsync*
  • 启动 rsync 服务并设置开机自启:
[root@sl1 ~]# rsync --daemon# 配置开机自启(写入rc.local----linux系统启动过程中最后执行的脚本)[root@sl1 ~]# vim /etc/rc.d/rc.local#最后添加---启动和服务的配置文件
rsync --daemon --config=/etc/rsyncd.conf[root@sl1 ~]# chmod +x /etc/rc.d/rc.local
  • 验证服务:[root@sl1 ~]# ss -utln 查看 873 端口是否监听。

(三)源服务器配置与测试

  1. 配置 yum 源与依赖
# 删除原有YUM源配置rm -rf /etc/yum.repos.d/*# 下载阿里云CentOS 7源wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo#安装依赖[root@sl1 ~]# yum -y install epel-release

  1. 创建认证密码文件
[root@sl1 ~]# vim /etc/rsync.pass# 添加密码(与目标服务器对应)123456[root@sl1 ~]# chmod 600 /etc/rsync.pass
  1. 创建测试目录并同步
[root@sl1 ~]# mkdir -pv /root/etc/test# 执行同步命令[root@sl1 ~]# rsync -avH --port 873 --progress --delete /root/etc/ admin@192.168.100.20::etc_from_client --password-file=/etc/rsync.pass

登录目标服务器,查看 /tmp 目录,确认文件同步成功。

[root@sl2 ~]# cd /tmp[root@sl2 tmp]# ls
test

(四)inotify-tools 实时同步配置

  1. 检查内核支持:[root@sl1 ~]# ll /proc/sys/fs/inotify ,存在 max_queued_events 等文件则支持。
  1. 安装工具
[root@sl1 ~]# yum -y install make gcc gcc-c++[root@sl1 ~]# yum -y install inotify-tools
  1. 编写实时同步脚本
[root@sl1 ~]# mkdir /autorsync && touch /autorsync/inotify.sh[root@sl1 ~]# chmod +x /autorsync/inotify.sh[root@sl1 ~]# vim /autorsync/inotify.sh# 添加内容host=192.168.100.20 # 目标服务器IPsrc=/root/etc # 源端监控目录des=etc_from_client # 目标端模块名password=/etc/rsync.pass # 密码文件user=admin # 认证用户inotifywait=/usr/bin/inotifywait$inotifywait -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files;dorsync -avzP --delete --timeout=100 --password-file=${password} $src $user@$host::$desecho "${files} was rsynced" >>/tmp/rsync.log 2>&1done
  1. 启动脚本并验证
[root@sl1 ~]# nohup bash /autorsync/inotify.sh &# 测试:创建文件[root@sl1 ~]# touch /root/etc/abc# 查看日志[root@sl1 ~]# tail /tmp/rsync.log# 目标服务器查看/tmp目录,确认文件实时同步[root@sl2 ~]# ls /tmp/etc
abc test

六、总结

rsync 是 Linux 下强大的数据同步工具,基础用法可满足本地、远程定时同步需求;结合 inotify-tools 后,能实现文件变化的实时捕捉与同步,适配对数据一致性要求高的场景。通过合理配置服务端、客户端参数,以及脚本编写,可灵活搭建高效、可靠的数据同步方案。

http://www.lryc.cn/news/626415.html

相关文章:

  • Linux 文本处理三剑客:awk、grep、sed 完全指南
  • Redis 安装教程
  • Linux的i节点(inode) 和 数据块(Block)相关操作详解
  • 中小型企业是否需要使用高防服务器
  • 服务器硬件电路设计之 SPI 问答(三):SPI 信号完整性守护与时钟频率的硬件设计羁绊
  • 阿里云ECS服务器的公网IP地址
  • 服务器硬件电路设计之 SPI 问答(一):解密 SPI—— 从定义到核心特性
  • 对称加密算法
  • TDengine IDMP 运维指南(数据导入导出)
  • AI大模型×政务热线:数造科技打造企业动态画像的“实时监测引擎”
  • 【自记】Power BI 中 DISTINCT 和 ALLNOBLANKROW 的区别说明
  • Java:将视频上传到腾讯云并通过腾讯云点播播放
  • 通过uniapp将vite vue3项目打包为android系统的.apk包,并实现可自动升级功能
  • 【考研408数据结构-04】 栈与队列:受限的线性表
  • CentOS7.9中安装Harbor以及配置https
  • 【Linux】系统部分——磁盘存储结构与文件系统
  • 初试Docker Desktop工具
  • 如何能成功在centos7下安装nodejs18+以上版本
  • TDengine IDMP 运维指南(5. 使用 Helm 部署)
  • 不止效率工具:AI 在创意领域的 “叛逆生长”—— 从文案生成到艺术创作的突围
  • 关于AKShare接口数据,快速查询命令大全
  • 从基础到本质:文件 IO 操作全解析
  • Deepresearch Agents:下一代自动研究智能体的架构革命与产业实践
  • 源码编译部署 LAMP 架构详细步骤说明
  • 中金所股指期货交易规则
  • 微算法科技(NASDAQ: MLGO)引入高级区块链DSR算法:重塑区块链网络安全新范式
  • 从零开始的云计算生活——第四十七天,细水长流,kubernetes模块之ingress资源对象
  • day075-MySQL数据库服务安装部署与基础服务管理命令
  • ROADS案例实践:制造业的设备物联网与预测性维护
  • 有序二叉树的删除