rsync+inotify 实现服务器之间目录文件实时同步

简介:

web主:192.168.1.139

web备:192.168.1.138

一、安装web主:

1.安装rsync

wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz

tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9

./configure --prefix=/usr/local/rsync
make 
make install

2.安装完毕后建立认证密码文件:

echo "123456">/usr/local/rsync/rsync.passwd
其中“123456”是我们设置的密码

为了安全起见我们把密码文件的权限设置成 600:
chmod 600 /usr/local/rsync/rsync.passwd

3.安装 inotify
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz 
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify

make && make install

4.创建 rsync 复制脚本
脚本的主要作用是是将 server 端的目录/tmp 里的内容,如果修改了(无论是添加、修改、删除文件)能
够通过 inotify 监控到,并通过 rsync 实时的同步给 client 的/tmp 里,下面是通过 shell 脚本实现的

#!/bin/bash
host=192.168.1.138
src=/web/wwwroot/
des=apabi
user=apabiuser
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src    | while read files
do
/usr/local/rsync/bin/rsync  -vzrtopg  --delete  --progress  --password-file=/usr/local/rsync/rsync.passwd  $src $user@$host::$des
echo "${files} was rsynced" >>/var/log/rsync.log 2>&1
done

并给予 764 权限
chmod 764 rsync.sh 
切记等客户端安装完毕后再运行这个脚本,否侧会报错
sh /web/wwwroot/rsync.sh & 

5.我们还可以把 rsync.sh 脚本加入到开机启动项里
[root@nginx tmp]# echo "/web/wwwroot/rsync.sh" >> /etc/rc.local 

 

6.安装客户端配置:
安装 rsync
tar zxvf rsync-3.0.9.tar.gz 
cd rsync-3.0.9
./configure --prefix=/usr/local/rsync
make 
make install
7.创建密码文件,注意里面的信息要和主服务器一致 

cd /usr/local/rsync
echo "apabiuser:123456" >rsync.passwd

8.给密码文件设置 600 权限,否则启动服务会报错
chmod 600 rsync.passwd 
9.创建 rsync 配置文件

vim rsync.conf

uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[apabi]
path = /web/wwwroot/
comment = apabi file
ignore errors
read only = no
write only = no
hosts allow = 192.168.1.139
hosts deny = *
list = false
uid = root
gid = root
auth users = apabiuser
secrets file = /usr/local/rsync/rsync.passwd

其中 apabi 是 server 服务端里的认证模块名称,需要与主服务器里的一致 
把配置文件命名为 rsync.conf,放到/usr/local/rsync/目录里
10.启动 rsync 服务

/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf 
11.把 rsync 服务加入开机启动项
echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf" >> /etc/rc.local

12.在服务端 /web/wwwroot/ 下的文件:

#pwd

#ls

13.在客户端 /web/wwwroot 下的文件:

#pwd

#ls

我们在服务端创建一个测试文件 apabi20130803 看能不能自动同步到客户端

#echo "apabi test" > apabi20130803

我们在客户端查看可以看到apabi20130803文件,就说明成功了


本文转自 jxzhfei  51CTO博客,原文链接:http://blog.51cto.com/jxzhfei/1263811


相关文章
|
24天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
60 9
|
3月前
|
存储 UED Windows
Windows服务器上大量文件迁移方案
Windows服务器上大量文件迁移方案
178 1
|
4月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
102 5
|
2月前
|
Python
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
34 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
|
3月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
55 4
|
2月前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
361 0
|
4月前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
426 1
Linux 服务器下载百度网盘文件
|
4月前
|
应用服务中间件 Docker 容器
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
这篇文章介绍了在Docker中安装Tomcat的过程,包括搜索Tomcat镜像、拉取镜像、目录挂载的准备、创建并挂载容器,以及如何进入容器和进行测试。文中还说明了如何将WAR包部署到Tomcat服务器并访问部署的应用。
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
|
4月前
|
PHP
PHP遍历文件并同步上传到服务器
在进行网站迁移时,由于原网站的图片文件过多,采用打包下载再上传的方式耗时过长,且尝试使用FTP工具从旧服务器传输至新服务器时失败。为解决此问题,特使用PHP编写了一款工具,该工具能扫描指定目录下的所有`.webp`图像文件,并将其上传至新的服务器,极大地提高了迁移效率。
107 16
|
4月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?