rsync同步文件

介绍

为了实现组件的高可用,比如gitlab或者禅道,一般会在不同机器分别安装gitlab,它们公用一个外接的数据库。但是gitlab在本地还会有一些数据生成,这些数据在各个gitlab之间也需要保持一致,可以采用rsync实现不同机器之间的文件同步。

安装

以禅道双节点为例,所有安装了禅道客户端的机器安装rsync,命令:

yum install -y rsync

主节点配置

切换到主禅道所在机器,修改rsync配置文件/etc/rsyncd.conf:

uid = nobody
gid = nobody
use chroot = no
max connections = 3
pid file = /var/run/rsyncd.pid
log file=/var/log/rsyncd.log
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsync.pass
[forzbox] # 自定义模块名,可多个
path = /opt/zbox/app/zentaoep/www/data/upload/1 # 要同步的目录
comment = BACKUP CLIENT IS zbox
ignore errors
read only = yes
list = no
# 以下两项是socket连接认证
auth users = forzbox
secrets file = /etc/rsync.pass

这里配置的同步方式是通过rsync进程来复制数据的方式,还有别的同步方式后续会说到。还有一些配置项,如主机权限,目录筛选等可以自行百度。

主节点创建认证文件/etc/rsync.pass,填写内容为用户名密码,用户名是上边配置文件中自定义的,密码是自己定的,注意格式,且这个认证文件的权限要为600:

forzbox:pass123

从节点配置

从节点也创建认证文件/etc/rsync.pass,内容为密码即可,权限为600:

pass123

启动

主从节点启动服务:

systemctl start rsyncd && systemctl enable rsyncd

如果是启用了防火墙,还需要配置端口,默认是873。

从节点配置定时任务进行每5分钟自动同步(这里采用的同步方式是:从节点通过rsync进程拉取主节点的数据到本地),crontab -e之后:

*/5 * * * * rsync -vzrtp --progress --delete --password-file=/etc/rsync.pass forzbox@192.168.178.129::forzbox /opt/zbox/app/zentaoep/www/data/upload/1 >> /root/crontab.log 2>&1

上述命令参数说明:

  • v:显示详细信息
  • z:传输过程中对数据进行压缩
  • r:递归
  • t:保留修改时间属性
  • p:保留文件权限属性
  • --progress:显示数据传输的进度信息
  • --password-file=FILE:指定密码文件
  • --delete:删除那些仅在目标路径中存在的文件(源路径中不存在)

3种同步方式

rsync的同步方式有3种。

本地复制

rsync [选项] SRC... [DEST]

选项为参数,SRC表示原路径,DEST表示目标路径,下同。

通过shell远程复制

  1. 下载数据

    rsync [选项] [user@]HOST:SRC... [DEST]     
    

    不加user@表示用root用户进行登陆远程主机下载数据到本地的DEST路径。

  2. 上传数据

    rsync [选项] SRC... [user@]HOST:DEST
    

    这里的SRC表示本地数据,DEST表示远端主机目录。

通过rsync进程远程复制

  1. 下载数据

    rsync [选项] [user@]HOST::SRC [DEST]
    

    这里双冒号后的SRC表示远端服务端的模块名。

    rsync [选项] rsync://[user@]HOST[:port]/SRC [DEST]   
    

    这里的SRC表示实际的同步目录名,这种方式可以指定端口。

  2. 上传数据

    rsync [选项] SRC [user@]HOST::DEST    
    

    上传本地客户端数据到远端服务端的DEST模块名指定的路径。

    rsync [选项] SRC rsync://[user@]HOST[:port]/DEST
    

    这里的DEST表示实际的同步目录名,这种方式可以指定端口。


参考:
https://www.cnblogs.com/regit/p/8074221.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rsync配置文件的实时同步可以通过使用inotify和rsync命令来实现。首先,需要在本地和远程系统上都安装rsync。然后,使用inotify监听文件变动,并触发rsync同步命令的执行。具体步骤如下: 1. 在本地和远程系统上安装rsync命令。可以使用apt、yum或者其他适用于你的系统的包管理工具来安装。 2. 在本地系统上创建一个监听脚本,使用inotify来监控rsync配置文件的变动。当rsync配置文件发生变动时,脚本会触发rsync同步命令的执行。以下是一个示例脚本: ```bash #!/bin/bash # 监听的rsync配置文件路径 config_file="/path/to/rsyncd.conf" # 监听文件变动,并触发rsync同步命令的执行 inotifywait -m -e modify "$config_file" | while read path action file; do # 执行rsync同步命令 rsync -avzP username@remote:/path/to/rsyncd.conf /local/path/to/rsyncd.conf # 注意替换username、remote和本地/远程路径为实际的值 done ``` 3. 将脚本保存为一个可执行文件,如`sync_config.sh`。 4. 在本地系统上启动脚本,使用以下命令: ```bash ./sync_config.sh ``` 5. 当rsync配置文件发生变动时,脚本会自动执行rsync同步命令,将远程的配置文件同步到本地。 这样,rsync配置文件的实时同步就可以实现了。请注意,这只是一个示例,实际的配置和路径需要根据你的实际情况进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [rsync 同步文件](https://blog.csdn.net/catoop/article/details/125331961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值