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工具

1.1 关于rsync

一款快速增量备份工具

  • Remote Sync,远程同步

  • 支持本地复制,或者与其他SSH、rsync主机同步

  • 官方网站:http://rsync.samba.org

1.2 rsync 命令的基本用法

  • -r:递归模式,包含目录及子目录中的所有文件。

  • -l:对于符号链接文件仍然复制为符号链接文件。

  • -v:显示同步过程的详细(verbose)信息。

  • -a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。

  • -z:在传输文件时进行压缩。

  • --delete:删除客户端有的而服务端位置没有的文件,保持客户端和服务端的文件完全一致。

1.3 rsync实现下行同步下载、上行同步上传

1.3.1 rsync服务端:

1.安装rsync,centos7桌面一般都已安装

?# 安装rsync
?[root@rsync ~]# rpm -qa |grep rsync ?
?rsync-3.0.9-17.el7.x86_64
?# 没有安装rsync,使用yum安装
?[root@rsync ~]# yum -y install rsync

2.修改rsync配置文件

?# 修改rsync配置文件
?[root@rsync ~]# vim /etc/rsyncd.conf ? ##修改rsync配置文件
?uid = root
?gid = root
?##禁锢在源目录
?use chroot = yes
?##监听地址
?address = 172.16.10.10
?##监听端口
?port 873
?##日志文件位置
?log file = /var/log/rsyncd.log
?##存放进程 ID 的文件位置
?pid file = /var/run/rsyncd.pid
?##允许访问的客户机地址
?hosts allow = 172.16.10.0/24
?##共享模块名称
?[wwwroot]
? ? ?## 源目录的实际路径
? ?  path = /var/www/html
? ? ?## 描述信息
? ?  comment = Document Root of www1.bdqn.com
? ? ?## 是否为只读
? ?  read only = yes
? ? ?## 同步时不再压缩的文件类型
? ?  dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
? ? ?## 授权账户
? ?  auth users = backuper
? ? ?## 存放账户信息的数据文件
? ?  secrets file = /etc/rsyncd_users.db

3.创建源文件目录

?[root@rsync ~]# mkdir -p /var/www/html 

4.创建rsync用户及密码,格式为:用户名:密码

?# 格式为:用户名:密码
?[root@rsync ~]# echo "backuper:pwd123" > /etc/rsyncd_users.db 
?[root@rsync ~]# cat /etc/rsyncd_users.db
?backuper:pwd123
?# 修改rsync用户文件权限
?[root@rsync ~]# chmod 600 /etc/rsyncd_users.db
?[root@rsync ~]# ll -d /etc/rsyncd_users.db
?-rw------- 1 root root 16 8月 ?20 09:00 /etc/rsyncd_users.db

5.启动rsync

?[root@rsync ~]# rsync --daemon
?[root@rsync ~]# netstat -natp |grep rsync ##查看状态
?tcp ? 0 ? 0 172.16.10.10:873 ? ? 0.0.0.0:* ?  LISTEN ? ? ?3606/rsync 

1.3.2 rsync客户端:

客户端连接服务需要使用rsync命令,所以客户端也需要安装rsync

1.安装rsync,centos7桌面一般都已安装

?# 安装rsync
?[root@rsync ~]# rpm -qa |grep rsync ?
?rsync-3.0.9-17.el7.x86_64
?# 没有安装rsync,使用yum安装
?[root@rsync ~]# yum -y install rsync

2.客户端从服务端同步下载数据

两种方式,分别如下:

?# 语法一:rsync -avz  --delete  用户名@rsync服务器::共享模块名 ? 存放本地的路径
?[root@client ~]# rsync -avz --delete backuper@172.16.10.10::wwwroot /opt
?# 语法二:rsync -avz  --delete ? rsync://用户名@rsync服务器/共享模块名 ? 存放本地的路径
?[root@client ~]# rsync -avz  --delete ? rsync://backuper@172.16.10.10/wwwroot /opt/

3.客户端向服务端同步上传数据

两种方式,分别如下:

# 语法一:rsync -avz --delete 本地上传文件路径 用户名@rsync服务器::共享模块名 
[root@client ~]# rsync -avz --delete  backuper@172.16.10.10::wwwroot /opt
# 语法二:rsync -avz --delete  本地上传文件路径 rsync://用户名@rsync服务器/共享模块名
[root@client ~]# rsync -avz --delete rsync://backuper@172.16.10.10/wwwroot /opt/

4.设置无密码交互登录

# 创建密码文件
[root@client opt]# echo "pwd123" > /etc/server.pass
# 修改文件权限
[root@client opt]# chmod 600 /etc/server.pass
[root@client opt]# rsync -avz --delete --password-file=/etc/server.pass backuper@172.16.10.10::wwwroot /opt    ##--password-file 指定密码文件位置

二、实现实时同步上传

2.1 rsync服务端:

修改配置文件

# 修改rsync配置文件
[root@rsync ~]# vim /etc/rsyncd.conf   ##修改rsync配置文件
uid = root
gid = root   ##如果不是root用户登录则需要修改文件权限,给登录用户写的读写执行的权限
...
    ## 是否为只读
    read only = no  ##只读模式改为 no
...

2.2 rsync客户端:

1.调整 inotify 内核参数

当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。例如,可直接修改/etc/sysctl.conf 配置文件,将管理队列设为 32768,实例数设为 1024,监控数设为 1048576,通常情况下监控数所设的值建议大于监控目标的总文件数。

[root@client html]# vim /etc/sysctl.conf 
fs.inotify.max_queued_events = 16384    ##监控事件队列数
fs.inotify.max_user_instances = 1024    ##监控最多实例数
fs.inotify.max_user_watches = 1048576   ##每个实例监控的最大文件数
[root@rsync html]# sysctl -p   ##刷新生效
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

2.安装inotify

[root@client ~]# yum -y install gcc gcc-*
[root@client inotify-tools-3.14]# tar zxf inotify-tools-3.14.tar.gz 
[root@client inotify-tools-3.14]# cd inotify-tools-3.14/
[root@client inotify-tools-3.14]# ./configure && make && make install

3.inotifywait 的使用:

[root@client ~]# inotifywait -mrq -e modify,create,move,delete /opt/
-m 持续监控
-r 递归目录
-q 简化输出信息
-e 用来指定要监控哪些事件
 modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)

4.编写触发式同步脚本

[root@client ~]# vim /root/inotify_rsyncd.sh 
INOTIFY_CMD() {
        inotifywait -mrq -e modify,create,move,delete /opt/
}
RSYNC_CMD() {
        rsync -az --delete --password-file=/etc/server.pass /opt/  backuper@172.16.10.10::wwwroot
}
INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
        RSYNC_CMD
done

5.测试上行同步

# 在客户端运行inotify_server.sh 脚本程序
[root@client ~]# bash inotify_server.sh & ##后台运行
# 到客户端的/opt/ 目录,执行增加、删除、修改文件等操作
[root@client opt]# touch kc20
[root@client opt]# mkdir kgc
# 查看服务器中的/var/www/html 目录下的变化情况
[root@rsync ~]# cd /var/www/html
[root@rsync html]# ls
kc20 kgc
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:57:06  更:2021-09-04 17:58:16 
 
开发: 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年11日历 -2024/11/15 13:33:14-

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