rsync 实时同步文件

目录

一、rsync服务端

1、下载rsync

2、配置rsync服务端配置文件

二、rsync客户端

1、下载 rsync 和 inotify-tools 软件

2、编写rsync实时同步脚本


一、rsync服务端

1、下载rsync

# 下载 CentOS7 通用源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

yum install -y rsync

2、配置rsync服务端配置文件


cat > /etc/rsyncd.conf << EOF

################################################################
## 复制粘贴即可,然后请将修改自定义位置的内容: path
## 请修改 path 为你的实际目录,其他内容可视情况修改
################################################################

# 日志文件位置,启动rsync后自动产生这个文件,无需提前创建
log file = /var/log/rsyncd.log  
# pid文件的存放位置  
pidfile = /var/run/rsyncd.pid  
# 支持max connections参数的锁文件  
lock file = /var/run/rsync.lock 
# 用户认证配置文件,里面保存用户名称和密码,必须手动创建这个文件  
secrets file = /etc/rsync.pass   

# 执行以下命令即可完成用户认证配置文件设置,具体的用户和密码,请自行修改
# echo "admin:123456" > /etc/rsync.pass  && chmod 600 /etc/rsync.pass

# 自定义同步名称(自定义模块名)
[backup]     
# rsync服务端数据存放路径,客户端的数据将同步至此目录,请跟你的实际修改该目录
path = /tmp/       
comment = sync files  
# 设置rsync运行权限为root      
uid = root  
# 设置rsync运行权限为root      
gid = root  
# 默认端口 , 客户端需要访问该端口,请记得开通防火墙策略或者直接关闭防火墙:systemctl stop firewalld      
port = 873 
# 表示出现错误忽略错误       
ignore errors 
# 默认为true,修改为no,增加对目录文件软连接的备份    
use chroot = no  
# 设置rsync服务端为读写权限     
read only = no    
# 不显示rsync服务端资源列表
list = no    
# 最大连接数 
max connections = 200 
# 设置超时时间    
timeout = 600    
# 执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开 
auth users = admin   

# 允许进行数据同步的客户端IP地址,可以设置多个用英文状态下逗号隔开    
# hosts allow = 192.168.51.133   
# 禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开  
# hosts deny = 192.168.1.1      

EOF

## 设置 rsync服务的账号和密码,务必将密码文件设置为 600 权限
 echo "admin:123456" > /etc/rsync.pass  && chmod 600 /etc/rsync.pass

## 设置开机自启
systemctl enable rsyncd  && systemctl restart rsyncd

二、rsync客户端

        rsync客户端不需要启动rsyncd服务,仅仅安装rsync,能执行rsync命令即可。要实现rsync实时同步,还需要一个关键性的软件:inotify-tools

1、下载 rsync 和 inotify-tools 软件

# 下载 CentOS7 通用源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

# 下载 epel-7.repo 源,可以提供 inotify-tools 软件下载
# epel(RHEL7系列)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo

yum install -y inotify-tools rsync

2、编写rsync实时同步脚本

cat > /etc/inotify.sh << EOF

#!/bin/bash
# This Rsync script based on inotify.
# Date:2023-4-6
# Version:1.0
# inotify.sh

#####################################################################
## 复制粘贴,然后需要修改的内容分别是: SRC 和 server 
## 其他内容可以修改也可自行按照各自情况修改
#####################################################################

# 写您需要备份的目录
SRC=/etc/
# 此处写的是rsync服务端自定义的同步名称(自定义模块名)
DEST1=backup 
# 请更改server为你的 rsync 服务地址   
server=192.168.51.140
User=admin
# echo "123456" > /etc/rsync.pass  && chmod 600 /etc/rsync.pass
Passfile=/etc/rsync.pass


[ ! -e \$Passfile ] && exit 2
#Wait for change
inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f %e' \
--event modify,create,move,delete,attrib \${SRC} | while read files
do
/usr/bin/rsync -avzP  --delete  --timeout=100 --password-file=\$Passfile \$SRC \
\${User}@\${server}::\$DEST1
echo "\${files} was rsynced" >> /var/log/rsync.log 2>&1
done &

EOF

## 执行 inotify.sh 脚本
sh /etc/inotify.sh 

## 设置开机自启
chmod a+x /etc/rc.d/rc.local
echo "nohup /etc/inotify.sh  &" >> /etc/rc.d/rc.local

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值