linux服务器文件实时同步

1 背景说明

在做系统集群部署时,涉及到两个或多个服务器之间文件同步.在软件层面linux服务环境找到以下两种同步方式

  • 利用linux NFS功能将网络共享文件挂载成本地目录
  • 采用文件监听,实时推送

服务器资源如下

  • 服务器1 10.2.4.51 ,作为主服务器
  • 服务器2 10.2.4.52 ,作为从服务器

2 NFS网络共享配置

2.1 主服务器

2.1.1 安装应用包
yum install -y nfs-utils rpcbind #nfs安装命令 author: herbert qq:464884492
systemctl enable nfs #将nfs设置开机启动
systemctl enable rpcbind #将rpcbind设置开机启动
2.1.2 共享配置

主服务建立需要共享的文件夹

mkdir /home/nfs_data # 主服务需要共享的目录

配置从服务可以访问主服务器

vi /etc/exports #author: herbert qq:464884492

设置内容为

/home/nfs_data/ 10.2.4.52(rw,sync,no_root_squash)

重启服务,注意一定要先启动 rpcbind

systemctl stop nfs
systemctl stop rpcbind
systemctl start rpcbind
systemctl start nfs
showmount -e # 可以检查NFS配置是否生效
# 配置正确后,会有一下提示信息
Export list for hk51:
/home/nfs_data 10.2.4.52
2.1.3 防火墙配置

如果服务器需要开启防火墙,需要在防火墙添加服务,可以通过firewall-cmd --state 防火墙开启状态

firewall-cmd --add-service=nfs --permanent --zone=public
firewall-cmd --add-service=mountd --permanent --zone=public
firewall-cmd --add-service=rpc-bind --permanent --zone=public
firewall-cmd --reload #重新载入配置,使其生效

2.2 从服务器

2.2.1 应用包安装
yum -y install nfs-utils
2.2.2 挂载配置

在相同的路径建立同样的目录

mkdir /home/nfs_data # 从服务需要共享的目录

挂载目录

mount -t nfs -o sync,noac 10.2.4.51:/home/nfs_data /home/nfs_data #目录挂载

检查挂载

 df -h #查看挂载

配置开机启动挂载

vi /etc/fstab #追加内容 10.2.4.51:/home/nfs_data /home/nfs_data/ nfs sync,noac 0 0

3 文件实时监听同步

3.1 SSH互信配置

主服务器和从服务分别生成自己的公钥,命令如下

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa  # 生成证书
cd ~/.ssh/ #切换目录
touch authorized_keys #生成认证文件
cat id_rsa.pub >>authorized_keys #复制公钥到认证文件
scp authorized_keys 10.2.4.52:/root/.ssh #远程复制自己公钥到对方服务器
service sshd restart #重启SSH服务

主服务器和从服务器 authorized_keys 文件,保存所有需要免密登录服务器的公钥信息即id_rsa.pub文件中的值

3.2 同步软件安装

主服务器和从服务器同时安装应用包

yum -y install inotify-tools
yum -y install unison #author: herbert qq:464884492

主服务器从服务器在相同路径建立需要实时共享的目录

mkdir /home/sync_data

3.3 同步脚本编写

主服务器(10.2.4.51)监听同步脚本,文件名 /home/runfilesync.sh

#/bin/bash
dstIp="10.2.4.52"
src="/home/sync_data"
dst="/home/sync_data"
/usr/bin/inotifywait -mrq -e create,delete,modify,move $src | while read line; do
/usr/bin/unison -batch $src ssh://$dstIp/$dst
echo -n "$line " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done

从服务器(10.2.4.52)监听同步脚本,文件名 /home/runfilesync.sh

#/bin/bash
dstIp="10.2.4.51"
src="/home/sync_data"
dst="/home/sync_data"
/usr/bin/inotifywait -mrq -e create,delete,modify,move $src | while read line; do
/usr/bin/unison -batch $src ssh://$dstIp/$dst
echo -n "$line " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done

3.4 运行脚本,开机自起

脚本需要后台运行,启动命令如下

nohup sh /home/runfilesync.sh &
ps -aux | grep runfilesync #检查脚本是否在运行
#设置开机启动 author: herbert qq:464884492
crontab -e #追加内容 @reboot /home/runfilesync.sh

4 效果测试

  1. 在主服务器 /home/nfs_data 和 /home/sync_data 两个文件夹中分别添加touch 地心侠士.txt,然后ssh到从服务,可以在从服务器这两个文件夹中找到地心侠士.text
  2. 在从服务器 /home/nfs_data 和 /home/sync_data 两个文件夹中分别添加touch 小院不小.txt,然后ssh到主服务,可以在主服务器这两个文件夹中找到小院不小.text

5 总结

通过软件或者协议实现实时同步,以上两种方法各有优劣.采用NFS网络共享协议,必须指定一个网络主节点.采用inotify+unison方式,有点分布式的感觉,无需指定主节点,但同步效果方面和稳定性方面会差一些

文件监听同步软件inotifyunison 安装需要编译环境,安装时比较麻烦.我这里提供了rpm安装包以及对应依赖包(安装命令rpm -ivh xxx.rpm).如果需要请关注公众号[小院不小],回复sync获取下载连接,或者添加QQ:464884492,获取



闲暇之余,做了一款有趣耐玩的消除类微信小游戏地心侠士,有兴趣可到微信搜索地心侠士玩玩,感谢支持

linux服务器文件实时同步的更多相关文章

  1. linux下两台服务器文件实时同步方案设计和实现

    inux下两台服务器文件实时同步方案设计和实现 假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器  有目录 /opt/test/ 192.168.0.2 目标服务器  有目录 /o ...

  2. sersync+rsync实现服务器文件实时同步

    sersync+rsync实现服务器文件实时同步 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.sersyn ...

  3. Centos 6.5 rsync+inotify 两台服务器文件实时同步

    rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...

  4. linux下两台服务器文件实时同步方案实现-乾颐堂

    假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器  有目录 /opt/test/ 192.168.0.2 目标服务器  有目录 /opt/bak/test/ 实现的目的就是保持这两 ...

  5. linux使用rsync、inotify-tools实现多台服务器文件实时同步

    需求:将本地192.168.1.10上的/data/wwwroot目录同步到 1.来源服务器上安装rsync.inotify-tools yum -y install rsync yum -y ins ...

  6. Linux服务器间文件实时同步的实现

    使用场景 现有服务器A和服务器B,如果服务器A的指定目录(例如 /home/paul/rsync/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /home/ ...

  7. rsync+inotify 实现服务器之间目录文件实时同步(转)

    软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...

  8. (转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步

    Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80 ...

  9. rsync+inotify-tools文件实时同步

    rsync+inotify-tools文件实时同步案例 全量备份 Linux下Rsync+sersync实现数据实时同步完成. 增量备份 纯粹的使用rsync做单向同步时,rsync的守护进程是运行在 ...

  10. inotify用法简介及结合rsync实现主机间的文件实时同步

    一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...

随机推荐

  1. AI-WEB-1.0靶机

    AI-WEB-1.0靶机 情报收集 扫描靶机,打开网站提示 Not even Google search my contents! dirb http://192.168.218.139 扫描网站 进 ...

  2. 各开发语言DNS缓存配置建议

    作者:翟贺龙 一.背景 在计算机领域,涉及性能优化动作时首先应被考虑的原则之一便是使用缓存,合理的数据缓存机制能够带来以下收益: 1.缩短数据获取路径,热点数据就近缓存以便后续快速读取,从而明显提升处 ...

  3. 【解决了一个小问题】alert manager要怎么样才能触发告警到企业微信上?

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 07-15:花了几个小时仍然是没走通这个流程,把中间结果记 ...

  4. Dto中使用正则校验规则,保证传入数据的正确性

    使用RegularExpression

  5. 提升vscode的搜索速度

    在全局搜索速度上vscode比pycharm要慢不少,尤其是对于我们这种近二十年历史的项目代码来说特别明显,所以这里记录一下我是如何加快vscode的搜索速度的. 官方的搜索建议 https://co ...

  6. C/C++ Zlib实现文件压缩与解压

    在软件开发和数据处理中,对数据进行高效的压缩和解压缩是一项重要的任务.这不仅有助于减小数据在网络传输和存储中的占用空间,还能提高系统的性能和响应速度.本文将介绍如何使用 zlib 库进行数据的压缩和解 ...

  7. powerDesigner 逆向工程 mysql 生成 PDM

     1. 信息补充说明 powerDesigner  16.5 mysql 5.6 主要内容:使用powerDesigner的逆向工程,将mysql中的数据库转换成PDM文件 所需资源: powerDe ...

  8. ESXi6.5导入虚拟机提示缺少所需的磁盘镜像

    环境 esxi6.7 错误提示 解决方案 原因:这是因为导出虚拟机的时候,没有把"CD/DVD驱动器"删掉,在导入的时候,找不到这个磁盘映像. 编辑.ovf文件,找到ovf:hre ...

  9. Java Calendar 多用,日期 加减

    服务需要订购一个月,订购一个月 不等于增加 30天:若是1,3,5的话应该 31天,要善用 Calendar public static void main(String[] args) throws ...

  10. Flink-postgres-cdc实时同步报错:无法访问文件 "decoderbufs": 没有那个文件或目录

    问题描述 Caused by: org.postgresql.util.PSQLException: 错误: 无法访问文件 "decoderbufs": 没有那个文件或目录 解决办 ...