searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Linux系统文件同步方法

2024-11-29 09:11:17
5
0

工具介绍

inotify-tools

inotify - tools 是一个基于 Linux 内核的 inotify 机制开发的工具集,包含两个主要的命令行工具:inotifywaitinotifywatch. inotifywait用于等待文件系统的特定事件,它会阻塞执行,直到监控的事件发生,比如文件创建,删除,更新等,等到监控的事件发生后,就执行相应的操作。inotifywatch`用于收集文件系统事件的统计信息,比如在一段时间内某个目录下发生了多少次文件修改等。

rsync

rsync 是linux系统中一个功能强大的文件同步工具。它不仅可以在本地的不同目录之间,还可以通过网络在不同的主机之间同步文件和目录。它通过比较源文件和目标文件的差异部分,只传输有变化的部分,从而大大提高了同步的效率。

编写同步脚本

本地同步

本地同步的脚本如下:

#!/bin/bash
# 源目录
SOURCE_DIR="/source/dir"
# 目标目录
DEST_DIR="/destination/dir"
inotifywait -mrq -e create,delete,close_write $SOURCE_DIR |
while read line; do
    rsync -avz --delete $SOURCE_DIR $DEST_DIR
done

远程同步

与本地同步不同,远程同步首先需要在远程机器上配置和开始rsync服务。

配置和开启rsync服务

在 /etc/rsyncd.conf 文件下面添加添加以下内容:

pid file=/var/lock/subsys/pidfile
lock file=/var/lock/subsys/rsync
log file=/var/log/rsync
uid=nobody
gid=nogroup
fake super = yes
timeout=1000
address=0.0.0.0
# 允许连接到rsync的最大连接数
max connections=199
[rulesDir] # 定义模块
# 模块对应的目的目录
path=${destDir}
list=no
use chroot=yes
read only=no
# rsync连接的用户
auth users=xxx
# rsync连接的密码
secrets file=/etc/rsyncd.pwd
#允许同步的网段
hosts allow=`192.168.1.0/24`

配置完后,启动rsyncd服务:

systemctl start rsyncd

远程同步脚本

inotifywait -mrq -e create,delete,close_write $SOURCE_DIR |
while read line; do
       rsync -avz  --delete $dir ${rsync_user}@$remote_host::${rsync_module} --password-file=${rsync_password}
done
0条评论
0 / 1000
哈哈嗯啦
2文章数
0粉丝数
哈哈嗯啦
2 文章 | 0 粉丝
哈哈嗯啦
2文章数
0粉丝数
哈哈嗯啦
2 文章 | 0 粉丝
原创

Linux系统文件同步方法

2024-11-29 09:11:17
5
0

工具介绍

inotify-tools

inotify - tools 是一个基于 Linux 内核的 inotify 机制开发的工具集,包含两个主要的命令行工具:inotifywaitinotifywatch. inotifywait用于等待文件系统的特定事件,它会阻塞执行,直到监控的事件发生,比如文件创建,删除,更新等,等到监控的事件发生后,就执行相应的操作。inotifywatch`用于收集文件系统事件的统计信息,比如在一段时间内某个目录下发生了多少次文件修改等。

rsync

rsync 是linux系统中一个功能强大的文件同步工具。它不仅可以在本地的不同目录之间,还可以通过网络在不同的主机之间同步文件和目录。它通过比较源文件和目标文件的差异部分,只传输有变化的部分,从而大大提高了同步的效率。

编写同步脚本

本地同步

本地同步的脚本如下:

#!/bin/bash
# 源目录
SOURCE_DIR="/source/dir"
# 目标目录
DEST_DIR="/destination/dir"
inotifywait -mrq -e create,delete,close_write $SOURCE_DIR |
while read line; do
    rsync -avz --delete $SOURCE_DIR $DEST_DIR
done

远程同步

与本地同步不同,远程同步首先需要在远程机器上配置和开始rsync服务。

配置和开启rsync服务

在 /etc/rsyncd.conf 文件下面添加添加以下内容:

pid file=/var/lock/subsys/pidfile
lock file=/var/lock/subsys/rsync
log file=/var/log/rsync
uid=nobody
gid=nogroup
fake super = yes
timeout=1000
address=0.0.0.0
# 允许连接到rsync的最大连接数
max connections=199
[rulesDir] # 定义模块
# 模块对应的目的目录
path=${destDir}
list=no
use chroot=yes
read only=no
# rsync连接的用户
auth users=xxx
# rsync连接的密码
secrets file=/etc/rsyncd.pwd
#允许同步的网段
hosts allow=`192.168.1.0/24`

配置完后,启动rsyncd服务:

systemctl start rsyncd

远程同步脚本

inotifywait -mrq -e create,delete,close_write $SOURCE_DIR |
while read line; do
       rsync -avz  --delete $dir ${rsync_user}@$remote_host::${rsync_module} --password-file=${rsync_password}
done
文章来自个人专栏
狂奔在天翼云
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
0