三十五、【Linux常用工具】rsync实时同步演示,使用脚本后台自动同步

本文介绍rsync工具的基础使用,包括本地文件同步、远程同步及实时同步,并通过具体实例演示如何利用rsync配合inotifywait实现文件变化实时同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rsync同步、使用脚本后台自动同步

一、环境准备

准备两台虚拟机

svr7192.168.4.7
pc207192.168.4.207
关闭防火墙、SELinux设置为宽松状态、安装rsync

二、rsync概述

支持本地复制,与ssh、rsync主机同步

三、同步操作

rsync [选项] 源路径 目标路径
-av 基本同步,显示传输文件
–delete 删除目标多余的路径
-n 测试同步
-z:传输过程中启用压缩/解压
1.本地同步

-av 基本同步组合
[root@svr7 ~]# mkdir /mydir /todir
[root@svr7 ~]# cp /etc/passwd /etc/shadow /mydir/
[root@svr7 ~]# echo 122 > /mydir/1.txt
[root@svr7 ~]# rsync -av /mydir/ /todir/
sending incremental file list
1.txt
[root@svr7 ~]# cat /todir/1.txt
122

-av --delete 同步时删除目标多余的文件
[root@svr7 ~]# touch /todir/2.txt
[root@svr7 ~]# ls /todir/
1.txt 2.txt passwd shadow
[root@svr7 ~]# rsync -av --delete /mydir/ /todir/
sending incremental file list
deleting 2.txt
./
sent 116 bytes received 28 bytes 288.00 bytes/sec
total size is 3,504 speedup is 24.33
[root@svr7 ~]# ls /todir/
1.txt passwd shadow
[root@svr7 ~]# ls /mydir/
1.txt passwd shadow

2.远程同步 rsyns+SSH同步
与远程的SSH目录保持同步
下行(下载): rsync […] user@host:远程目录 本地目录
上行(上传):rsync […] 本地目录 user@host:远程目录
[root@svr7 ~]# rsync -av --delete /mydir/ root@192.168.4.207:/opt
[root@svr7 ~] ls /opt
1.txt passwd shadow

3.实时同步
虚拟机A的/mydir 目录的内容与虚拟机B的/opt进行同步
实现ssh无密码认证(公钥与私钥)
1.生成公钥与私钥
[root@svr7 ~]# ssh-keygen
[root@svr7 ~]# ls /root/.ssh/
id_rsa id_rsa.pub known_hosts
2.传递公钥
[root@svr7 ~]# ssh-copy-id root@192.168.4.207
[root@svr7 ~]# ssh root@192.168.4.207 #连接测试
Last login: Tue Sep 22 18:15:15 2020 from 192.168.4.7
[root@pc207 ~]#
[root@svr7 ~]# rsync -av --delete /mydir/ root@192.168.4.207:/opt
sending incremental file list #再次传递时无需密码

sent 113 bytes received 12 bytes 250.00 bytes/sec
total size is 3,504 speedup is 28.03
3.监控目录内容变化工具 (自己准备安装包)
基本用法
– inotifywait [选项] 目标文件夹
• 常用命令选项
– -m,持续监控(捕获一个事件后不退出)
– -r,递归监控、包括子目录及文件
– -q,减少屏幕输出信息
– -e,指定监视的 modify、move、create、delete、attrib 等事件类别
[root@svr7 ~]# yum -y install gcc make
[root@svr7 ~]# tar -xf inotify-tools-3.13.tar.gz -C /usr/local/
[root@svr7 ~]# cd /usr/local/inotify-tools-3.13/
[root@svr7 inotify-tools-3.13]# ./configure --prefix=/opt/myrpm
[root@svr7 inotify-tools-3.13]# make && make install
[root@svr7 ~]# ls /opt/myrpm/
bin include lib share
[root@svr7 ~]# /opt/myrpm/bin/inotifywait -rq /mydir/ #监控目录
书写shell脚本(把两个程序关联起来)
脚本:可以运行一个文件,实现某种功能
中文:新建用户zhangsan shell: useradd zhangsan
重复性:循环解决
死循环:while循环
while 条件
do
重复执行的事情
done

[root@svr7 /]# vim /etc/rsync.sh
while /opt/myrpm/bin/inotifywait -rqq /mydir/
do
rsync -a --delete /mydir/ root@192.168.4.207:/opt
done
[root@svr7 /]# chmod a+x /etc/rsync.sh #赋予执行权限
[root@svr7 /]# /etc/rsync.sh & #后台运行脚本程序

05-28
### rsync 使用指南及常见问题解决方案 rsync 是一个功能强大的文件同步工具,广泛应用于 Linux 和类 Unix 系统中。以下是关于 rsync使用方法和常见问题的解决方案。 #### 1. 检查 rsync 是否已安装 在使用 rsync 前,需要确保系统中已安装该工具。可以通过以下命令检查是否已安装: ```bash rpm -qa | grep "rsync" ``` 如果未安装,可以使用包管理器进行安装,例如在基于 Red Hat 的系统上使用 `yum` 或在基于 Debian 的系统上使用 `apt-get`[^2]。 #### 2. 基本语法 rsync 的基本语法如下: ```bash rsync [选项] 源路径 目标路径 ``` 常用选项包括: - `-a`:归档模式,表示递归传输并保持文件属性。 - `-v`:详细模式,显示传输过程中的详细信息。 - `-z`:压缩文件数据在传输过程中。 - `--delete`:删除目标目录中源目录没有的文件[^1]。 #### 3. 配置远程数据同步服务 配置 rsync 远程数据同步服务时,需要编辑 `/etc/rsyncd.conf` 文件,并设置模块名称、路径、权限等参数。启动服务后,客户端可以通过指定模块名进行同步操作[^1]。 #### 4. 实现文件实时同步 为了实现文件的实时同步,可以结合 inotify-tools 工具。inotify 可以监控文件系统的事件变化,并触发 rsync 执行同步任务。具体步骤包括安装 inotify-tools 和编写脚本来监听文件变化[^1]。 #### 5. 常见问题及解决方案 以下是 rsync 使用过程中可能遇到的一些常见问题及其解决方法: - **问题 1**:rsync 同步时出现权限不足错误。 - **解决方法**:确保源和目标路径具有正确的读写权限,或者以 root 用户身份运行 rsync 命令[^2]。 - **问题 2**:rsync 同步速度较慢。 - **解决方法**:尝试添加 `-z` 参数以压缩数据,减少网络传输量;同时检查网络带宽和磁盘 I/O 性能[^4]。 - **问题 3**:rsync 关闭命令报错。 - **解决方法**:检查 rsync 服务配置文件是否存在语法错误,并确保服务已正确启动。 #### 6. Vagrant 中的 Rsync 插件 在 Vagrant 环境下,可以使用 Gatling Rsync 插件来优化文件同步性能。此插件通过减少资源消耗,提高了大型同步文件夹的效率。安装插件后,可通过以下命令手动触发同步: ```bash vagrant rsync-auto ``` 需要注意的是,该插件可能会增加 rsync 操作的频率,因此需根据实际需求调整配置[^4]。 ```python # 示例 Python 脚本:监控文件变化并触发 rsync 同步 import os import subprocess def sync_files(source, destination): subprocess.run(["rsync", "-avz", source, destination]) source_path = "/path/to/source" destination_path = "/path/to/destination" # 触发同步 sync_files(source_path, destination_path) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱听雨的少年

感谢老板支持,早日成为技术大牛

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值