当前位置:   article > 正文

Linux内网离线用rsync和inotify-tools实现文件夹文件单向同步和双向同步

Linux内网离线用rsync和inotify-tools实现文件夹文件单向同步和双向同步

lsyncd实现方式可参考:https://www.jianshu.com/p/c075ccf89516

安装文件下载:相关文件下载
rsync默认都有,所以没有提供。

服务端和客户端均操作

服务端:双向同步其实都是服务端,只是单向同步时稍有区别
客户端:双向同步其实都是服务端

1、创建服务端和客户端密码文件

echo rsync_zyc_server:123456 > /etc/rsync_zyc_server.password
echo 123456 > /etc/rsync_zyc_client.password
# 修改密码访问权限,必须改
chmod 600 /etc/rsync_*
  • 1
  • 2
  • 3
  • 4

rsync_zyc_server.password:rsync服务配置里需要用到的认证文件和用户名
rsync_zyc_client.password:连接其他服务器的rsync服务时所需的密码文件

2、修改rsync配置文件并启动文件同步服务

vi /etc/rsyncd.conf

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area

# 端口
port =10873
# 以 xxxx 用户启动进程
uid = root
gid = root

# 无需让rsync以root身份运行,允许接收文件的完整属性
fake super = yes

# 禁锢推送的数据至某个目录,不允许跳出该目录
# 允许chroot,提升安全性,客户端连接模块,首先chroot到模块path参数指定的目录下
# chroot为yes时必须使用root权限,且不能备份path路径外的链接文件
use chroot = no

# 最大连接数
max connections = 200

# 超时时间
timeout = 300

# pid文件路径
pid file = /var/run/rsyncd.pid

# 锁文件路径
lock file = /var/run/rsync.lock

# 剔除某些文件或目录不同步
exclude = lost+found/

# 记录传输文件日志
transfer logging = yes

# 指定日志文件
log file = /var/log/rsyncd_zyc.log

# 日志文件格式
log format = %t %a %m %f %b

# 忽略错误信息
ignore errors

# 对备份数据可读写
read only = false

# 不允许查看模块信息
list = false

# 定义虚拟用户,作为连接认证用户
auth users = rsync_zyc_server

# 定义rsync服务用户连接认证密码文件路径
secrets file = /etc/rsync_zyc_server.password

# 设置不需要压缩的文件
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# 定义模块信息
[zycFileSync]
# 模块注释信息
comment = "双向同步目录测试"
# 定义备份数据目录,此处根据实际调整
path = /root/fileSyncRpm/testFiles/

[zycDatabaseSync]
comment = "数据库备份文件单向同步测试"
path = /root/fileSyncRpm/testDatabase/

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88

3、安装inotify-tools

上传下载好的epel-release-7-11.noarch.rpm和inotify-tools-3.14-9.el7.x86_64.rpm
安装:rpm -iv *.rpm

服务端操作

双向同步的脚本:

vi /root/fileSyncRpm/inotify.sh
  • 1
# 启动文件同步服务
rsync --daemon

# 远程主机ip地址
host=192.168.0.212

# 本地服务器同步目录(即同步该目录内的文件和子目录)
src=/root/fileSyncRpm/testFiles/

# 远程服务器 rsync 服务模块名
des=zycFileSync

# rsync服务用户连接认证密码文件路径
password=/etc/rsync_zyc_client.password

# 连接认证用户
user=rsync_zyc_server

# inotifywait 程序路径
inotifywait=/usr/bin/inotifywait

# 监听文件变化进行传输
$inotifywait -mrq -e 'modify,delete,create,attrib' $src |while read files;
do
    rsync -azP $src $user@$host::$des --port=10873 --password-file=${password};

    # 日志,可视情况开启
    # echo "${files} was rsynced!" >> ./rsync_inotify.log 2>&1;

done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

单向同步的脚本:

vi /root/fileSyncRpm/databaseInotify.sh
  • 1
# 启动文件同步服务
rsync --daemon

# 远程主机ip地址
host=192.168.0.212

# 本地服务器同步目录(即同步该目录内的文件和子目录)
src=/root/fileSyncRpm/testDatabase/

# 远程服务器 rsync 服务模块名
des=zycDatabaseSync

# rsync服务用户连接认证密码文件路径
password=/etc/rsync_zyc_client.password

# 连接认证用户
user=rsync_zyc_server

# inotifywait 程序路径
inotifywait=/usr/bin/inotifywait

# 监听文件变化进行传输
$inotifywait -mrq -e 'modify,delete,create,attrib' $src |while read files;
do
    rsync -azP $src $user@$host::$des --port=10873 --password-file=${password};

    # 日志,可视情况开启
    # echo "${files} was rsynced!" >> ./rsync_inotify.log 2>&1;

done

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

启动单向同步和双向同步脚本(手动)

nohup sh inotify.sh > inotify.log 2>&1 &
nohup sh databaseInotify.sh > databaseInotify.log 2>&1 &
  • 1
  • 2

客户端操作

双向同步的脚本:

vi /root/fileSyncRpm/inotify.sh
  • 1
# 启动文件同步服务
rsync --daemon

# 远程主机ip地址
host=192.168.0.211

# 本地服务器同步目录(即同步该目录内的文件和子目录)
src=/root/fileSyncRpm/testFiles/

# 远程服务器 rsync 服务模块名
des=zycFileSync

# rsync服务用户连接认证密码文件路径
password=/etc/rsync_zyc_client.password

# 连接认证用户
user=rsync_zyc_server

# inotifywait 程序路径
inotifywait=/usr/bin/inotifywait

# 监听文件变化进行传输
$inotifywait -mrq -e 'modify,delete,create,attrib' $src |while read files;
do
    rsync -azP $src $user@$host::$des --port=10873 --password-file=${password};

    # 日志,可视情况开启
    # echo "${files} was rsynced!" >> ./rsync_inotify.log 2>&1;

done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

启动双向同步脚本(手动)

nohup sh inotify.sh > inotify.log 2>&1 &
  • 1

测试

在服务端和客户端创建文件测试

cd /root/fileSyncRpm/testFiles
touch b.1
  • 1
  • 2

设置开机自启动

创建服务单元文件:在 /etc/systemd/system 目录下创建一个新的服务单元文件,例如 zycFileInotify.service。 打开终端并运行:

vi /etc/systemd/system/zycFileInotify.service
  • 1
[Unit]
Description=Inotify File Sync Script
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash /root/fileSyncRpm/inotify.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这里 ExecStart 行指定了要执行的脚本位置。
加载并启用服务:保存并关闭文件后,运行以下命令来加载服务并设置开机启动:

sudo systemctl daemon-reload
sudo systemctl enable zycFileInotify.service
sudo systemctl start zycFileInotify.service
sudo systemctl status zycFileInotify.service
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/891803
推荐阅读
相关标签
  

闽ICP备14008679号