Linux服务器实现文件实时同步的方法详解

 更新时间:2024年03月01日 11:42:44   作者:_herbert  
在做系统集群部署时,常常会涉及到两个或多个服务器之间文件同步,这篇文章主要来和大家介绍一下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 效果测试

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

5 总结

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

文件监听同步软件inotify 和 unison 安装需要编译环境,安装时比较麻烦.我这里提供了rpm安装包以及对应依赖包(安装命令rpm -ivh xxx.rpm).

到此这篇关于Linux服务器实现文件实时同步的方法详解的文章就介绍到这了,更多相关Linux服务器文件同步内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • /etc/security/limits.conf详解与配置过程

    /etc/security/limits.conf详解与配置过程

    在Linux系统中,通过/etc/security/limits.conf文件和/etc/security/limits.d/目录下的配置文件,可以设置用户或用户组的资源限制,配置文件中的soft和hard限制分别代表警告级别和硬性限制,它们需要匹配才能生效
    2024-10-10
  • Ubuntu无法连接网络的解决办法

    Ubuntu无法连接网络的解决办法

    这篇文章主要为大家详细介绍了虚拟机中Ubuntu无法连接网络的有效解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 简析Linux网络编程函数

    简析Linux网络编程函数

    这篇文章主要介绍了Linux网络编程函数,利用这些基本函数,可以实现tcp协议通讯,可以实现通信。需要了解的小伙伴可以参考一下
    2021-08-08
  • 详解fedora 开启 apache 并 开启目录浏览模式

    详解fedora 开启 apache 并 开启目录浏览模式

    这篇文章主要介绍了fedora 开启 apache 并 开启目录浏览模式的相关资料,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • Linux之如何设置CPU Performance模式

    Linux之如何设置CPU Performance模式

    这篇文章主要介绍了Linux之如何设置CPU Performance模式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • bash命令使用详解

    bash命令使用详解

    在本篇文章里小编给大家分享的是关于bash命令使用的技巧和方法,有需要的朋友们学习下。
    2019-01-01
  • Apache下MP3 防盗链的解决办法

    Apache下MP3 防盗链的解决办法

    对于很多放MP3的网站来说,防盗链对于控制流量是个非常重要的事情,尤其是MP3被百度收录之后,那流量大的惊人,每天都上百G的流量,很快你的站点的流量就会用光了。
    2010-08-08
  • CentOS服务器+监控宝SNMP监控全攻略分享

    CentOS服务器+监控宝SNMP监控全攻略分享

    很多人和Sudu一样都想使用监控宝去监控自己的linux服务器,但是因为安装snmp存在一些问题导致无法成功设置snmp的设置。
    2010-12-12
  • 手把手教你启用Win10的Linux子系统(图文超详细)

    手把手教你启用Win10的Linux子系统(图文超详细)

    这篇文章主要介绍了手把手教你启用Win10的Linux子系统(图文超详细),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Centos7.3开机自动启动或执行指定命令操作

    Centos7.3开机自动启动或执行指定命令操作

    这篇文章主要介绍了Centos7.3开机自动启动或执行指定命令操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论