持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情
CentOS rsync 数据备份工具
环境: centos7
前言
来自百科: rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
服务端配置
安装xinetd
yum install -y xinetd
配置xinetd CentOS7安装之后没有/etc/xinetd.d/rsync 这个文件,只能自己创建一个了
cat >> /etc/xinetd.d/rsync << EOF
service rsync
{
disable = no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
EOF
启动xinetd
systemctl restart xinetd.service
配置rsync centos7 默认支持 rsync rsyncd.conf
cat >> /etc/rsyncd.conf << EOF
# root用户
uid=root
gid=root
# 模块名称
[test]
# 日志
log file = /var/log/rsyncd.log
# 同步目录
path=/test
# 最大连接数
max connections = 10
# 白名单
hosts allow = 192.168.233.128,192.168.233.129
# 黑名单
hosts deny = 0.0.0.0/32
read only = no
# 用户名
auth users =aa
# 密码文件
secrets file=/etc/rsyncd.pass
EOF
创建密码文件(格式: 用户名:密码)
cat >> /etc/rsyncd.pass << EOF
aa:123
EOF
文件添加权限
chmod 600 /etc/rsyncd.pass
chmod 755 /test
启动
rsync --daemon --config=/etc/rsyncd.conf
客户端配置
创建密码文件并赋权限
cat >> /etc/rsyncd.pass << EOF
# 密码要与服务端一致, 不需要用户名
123
EOF
# 添加权限
chmod 600 /etc/rsyncd.pass
手动测试同步
rsync -avzP --delete /test aa@192.168.233.129::test --password-file /etc/rsyncd.pass
参数解释:
aa用户名192.168.233.129服务端iptest服务端 /etc/rsyncd.conf配置模块名称/test客户端拉取到同步文件存储位置--password-file /etc/rsyncd.pass密码文件
更多参数解释请使用rsync --help命令查看, 支持交互参数非常丰富, 这里仅截了一小部分
注意:
- /test 在 aa@192.168.233.129::test 前面是上传到192.168.233.129
- /test 在 aa@192.168.233.129::test 后面是从192.168.233.129下载
rsync -avzP --delete aa@192.168.233.129::test /test --password-file /etc/rsyncd.pass
使用rsync可以配合inotify-tools或sersync等工具来实现数据的实时同步
inotify-tools
安装
wget https://github.com/inotify-tools/inotify-tools/archive/refs/tags/3.21.9.6.tar.gz
tar -zxvf 3.21.9.6.tar.gz
cd inotify-tools-3.21.9.6/
# 这里如果报错需要安装automake
./autogen.sh
./configure
make && make install
启动 监控文件变化同步脚本
#!/bin/sh
/usr/local/inotify/bin/inotifywait -mrq -e create,move,delete,modify,attrib /test | while read file
do
rsync -avzP --delete /test aa@192.168.233.129::test --password-file /etc/rsyncd.pass
done
这里还可以添加一个守护脚本, 防止同步脚本挂掉