IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> rsync+inotify 远程同步 -> 正文阅读

[系统运维]rsync+inotify 远程同步

一、Rsync 介绍

Rsync是一款开源、快速、多功能、可实现全量及增量的本地或者远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移。
适用于 Unix、Linux、Windows 等多种操作系统平台。
Rsync能本地复制,远程复制,或者远程守护进程方式复制,它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制,以 delta-transfer 算法闻名。
Rsync 是 C/S 架构,监听873端口。

二、Rsync命令

语法结构:rsync [选项] 原始位置 目标位置

常用选项说明
-r递归模式,包含目录及子目录中的所有文件
-l对于符号链接文件仍然复制为符号链接文件
-v显示同步过程的详细信息
-z在传输文件时进行压缩
-a归档模式,递归并保留对象属性,等同于-rlptgoD
-p保留文件的权限标记
-t保留文件的时间标记
-g保留文件的属组标记(仅超级用户使用)
-o保留文件的属主标记(仅超级用户使用)
-H保留硬链接文件
-A保留ACL属性信息
-D保留设备文件及其他特殊文件
–delete删除目标位置有而原始位置没有的文件
–checksum根据对象的校验和来决定是否跳过文件

三、本地同步

[root@localhost ~]# mkdir /src //模拟rsync源
[root@localhost ~]# mkdir /des //模拟目标
[root@localhost ~]# cd /src
[root@localhost src]# touch 1.html //在rsync源目录创建需要同步的文件
[root@localhost src]# rsync -avz /src /des //将rsync源目录的文件同步到目标目录
sending incremental file list
src/
src/1.html

sent 116 bytes  received 39 bytes  310.00 bytes/sec
total size is 0  speedup is 0.00
[root@localhost src]# rsync -avz /src/ /des
sending incremental file list
./
1.html

sent 104 bytes  received 38 bytes  284.00 bytes/sec
total size is 0  speedup is 0.00
[root@localhost src]# tree /des
/des
├── 1.html //rsync -avz /src/ /des 执行的结果
└── src    //rsync -avz /src /des  执行的结果
    └── 1.html

1 directory, 2 files
[root@localhost des]#

注意点:
rsync -avz /src /des
rsync -avz /src/ /des
src源目录后面 跟斜杠与不跟斜杠是有区别的,加斜杠表示只同步改目录下的文件,不加斜杠表示连同该目录一起同步到目标目录。

四、远程同步

实验环境:
rsync源服务器:192.168.177.115
client客户端:192.168.177.116
步骤一:基础环境配置(两台都做)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
yum -y install ntp
ntpdate ntp1.aliyun.com

步骤二:rsync源服务器配置

yum -y install rsync
vim /etc/rsyncd.conf //清空配置并添加一下配置

uid = nobody //默认的管理用户
gid = nobody //默认的管理用户组
use chroot = yes //禁锢在源目录                                                
address = 192.168.177.115 //监听的IP地址
port 873 //监听的端口                                     
log file = /var/log/rsyncd.log	//日志文件位置                  
pid file = /var/run/rsyncd.pid	//存放进程ID的文件位置                  
hosts allow = 192.168.177.0/24	//允许访问的客户机地址
[wwwroot] //第一个共享模块,可以配置多个
path = /var/www/html    //源目录的实际路径                               
read only = yes         //是否为只读                                     
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z  	//同步时不再压缩的文件类型      
auth users = backuper   //授权账户,多个账号以空格分隔                                 
secrets file = /etc/users.db //存放账户信息的数据文件

步骤三:为同步账户创建数据文件

vim /etc/users.db
backuper:123456

chmod 600 /etc/user.db //只让root用户有读写权限

创建源目录,并且让所有用户都有读的权限

mkdir -p /var/www/html
chmod +r /var/www/html/ 
echo "thsi is rsync" > /var/www/html/1.txt

步骤四:启动 rsync 服务

[root@localhost ~]# systemctl start rsyncd
[root@localhost ~]# netstat -napt | grep 873
tcp        0      0 192.168.177.115:873     0.0.0.0:*               LISTEN      67497/rsync         
[root@localhost ~]# 

步骤五:同步文件到客户端

[root@localhost ~]# mkdir /des
[root@localhost ~]# rsync -avz backuper@192.168.177.115::wwwroot/ /des
Password: 
receiving incremental file list
./
1.txt

sent 46 bytes  received 121 bytes  11.52 bytes/sec
total size is 14  speedup is 0.08
[root@localhost ~]# 

步骤六:免交互配置

echo "123456" > /etc/server.pass //定义的密码的文件
chmod 600 /etc/server.pass //只给root用户读写权限

测试–delete,查看是否会删除目标(客户端)上有的文件,而同步源(rsync源)上没有的文件

[root@localhost ~]# cd /var/www/html/ 
[root@localhost html]# ls
1.txt
[root@localhost html]# rm -rf 1.txt           //在rsync源 的源目录删除刚才同步过去的文件
[root@localhost html]# tree /var/www/html/    
/var/www/html/ 

0 directories, 0 files
[root@localhost html]#

客户端测试–delete

[root@localhost des]# rsync -avz --delete --password-file=/etc/server.pass backuper@192.168.177.115::wwwroot /des
receiving incremental file list
deleting 1.txt
./

sent 27 bytes  received 46 bytes  146.00 bytes/sec
total size is 0  speedup is 0.00
[root@localhost des]# tree /des
/des

0 directories, 0 files
[root@localhost /]# 

五、rsync+inotify 实时远程同步

inotify 可以监控文件系统的变动情况,并做出通知响应。辅助软件是inotify-tools

  • inotify内核参数介绍:
    • max_queue_events:监控事件队列大小
    • max_user_instances:最多监控实例数
    • max_user_watches:每个实例最多监控文件数
  • 命令介绍
    • inotifywait:持续监控并实时输出监控结果
    • inotifywatch:用于短期监控,任务完成之后再输出结果
  • 命令的参数介绍
    • -m:持续进行监控
    • -r:递归监控所有子对象
    • -q:简化输出信息
    • -e:指定要监控哪些事件类型

实验

修改rsync源(rsync服务端)的配置文件(上行同步需要可写权限)
修改uid、gid 为root 不然会同不报错

[root@localhost ~]# vim /etc/rsyncd.conf 
uid = root
gid = root
use chroot = yes
address = 192.168.177.115
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.177.0/24
[wwwroot]
path = /var/www/html
read only = no //关闭只读
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = backuper
secrets file = /etc/user.db

客户端修改内核参数
//监控时间队列,默认为16384
fs.inotify.max_queued_events = 32768
//最多监控实例数,默认为128
fs.inotify.max_user_instances = 1024
//每个实例最多监控文件数,默认为8192
fs.inotify.max_user_watches = 1048576

vim /etc/sysctl.conf
[root@localhost /]# sysctl -p
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

客户端安装inotify-tools辅助工具(事先上传压缩包到opt目录下)

cd /opt && tar xzvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14 && ./configure
make && make install

另开一个客户端的终端,执行 inotifywait 命令,然后在客户端 /des 目录下添加文件、移动文件,跟踪屏幕输出结果
在这里插入图片描述
客户端编写触发同步的脚本

vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /des/" //实时监控的命令
RSYNC_CMD="rsync -apzH --delete --password-file=/etc/server.pass /des/ backuper@192.168.177.115::wwwroot/" //远程同步命令
$INOTIFY_CMD | while read DIRECTORY EVENT FILE //只要des目录下有以下变化(create,delete,move,modify,attrib)就远程同步
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then //先判断是否有同步操作在进行,如没有则同步
        $RSYNC_CMD
	fi
done
chmod +x /opt/inotify.sh //给与执行权限
chmod +x /etc/rc.d/rc.local //系统启动脚本
echo "/opt/inotify.sh" >> /etc/rc.d/rc.local //系统启动时加载inotify.sh脚本

客户端测试,在des目录下创建文件,查看是否可以上行同步到rsync服务端
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:50:23  更:2021-08-11 12:52:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 3:55:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计