前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RSYNC 数据同步(欧拉系统)

RSYNC 数据同步(欧拉系统)

作者头像
Kevin song
发布2023-08-31 14:08:32
3460
发布2023-08-31 14:08:32
举报
文章被收录于专栏:运维监控日志分析

rsync 是 linux 系统下的数据同步、备份工具。可实现数据全量备份、增量备份、远端数据同步以及本地数据同步。

系统版本

cat /etc/os-release

代码语言:javascript
复制
NAME="openEuler"
VERSION="22.03 (LTS-SP1)"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 (LTS-SP1)"
ANSI_COLOR="0;31"

服务器端配置

安装rsync

代码语言:javascript
复制
dnf install  rsync

查看rsync 版本

代码语言:javascript
复制
rsync –version

rsync 配置文件

vim /etc/rsyncd.conf

代码语言:javascript
复制
uid = root
gid = root
use chroot = yes
max connections = 100
pid file = /var/run/rsyncd.pid
exclude = lost+found/
log file=/var/log/rsyncd.log
transfer logging = yes
log format=%t %a %m %f %b
timeout = 900
[mirror]
path = /mnt/
comment = mirror
read only = yes
list = yes
auth users = rsync
secrets file = /etc/rsyncd.secrets

注意:匿名用户访问无需添加auth users = rsync和secrets file = /etc/rsyncd.secrets参数,省略创建密码文件步骤。

创建rsync管理用户

代码语言:javascript
复制
useradd -s /sbin/nologin -M rsync

目录属主属组权限

代码语言:javascript
复制
chown -R rsync:rsync /mnt/

创建密码文件

vim /etc/rsyncd.secrets

代码语言:javascript
复制
rsync:rsync@passwd

赋予文件权限

代码语言:javascript
复制
sudo chmod 600 /etc/rsyncd.secrets
sudo chown root:root /etc/rsyncd.secrets

启动rsync

代码语言:javascript
复制
systemctl start rsyncd;systemctl enable rsyncd

客户端同步配置

查看rsync 模块目录列表

rsync -av --list-only rsync@192.168.188.139::mirror/openeuler/

指定账户同步,同步mirror模块下openeuler目录到/opt目录下

rsync -avP --delete rsync://rsync@192.168.188.139/mirror/openeuler /opt

匿名同步,同步mirror模块下openeuler目录到/opt目录下

rsync -avP --delete rsync://192.168.188.139/mirror/openeuler /opt

rsync 配置文件参数介绍

代码语言:javascript
复制
port = 873  指定运行端口,默认是873
uid=root 服务器端传输文件时,要发哪个用户和用户组来执行,默认nobody
gid=root 服务器端传输文件时,要发哪个用户和用户组来执行,默认nobody
max connections=100 客户端最多连接数
use chroot=yes       
在传输文件之前,服务器守护程序 chroot 到文件系统中的目录中
pid file = /var/run/rsyncd.pid 
进程信息文件,便于获取进程号停止进程,便于判断服务是否启动
log file=/var/log/rsyncd.log rsync 服务器的日志
motd file=/etc/rsyncd.motd 
定义motd file 路径rsyncd.motd 内容是定义用户登录服务器信息
transfer logging=true 传输文件日志
timeout = 300 连接超时时间300秒
ignore errors 忽略传输过程小错误
hosts allow=192.168.100.0/24 允许访问rsync服务器的客户端白名单
hosts deny=0.0.0.0/32        禁止访问rsync服务器的客户端黑名单
log format=%t %a %m %f %b
默认log格式为:"%o %h [%a] %m (%u) %f %l"
%h 远程主机名
%a 远程IP地址
%l 文件长度字符数
%p rsync会话的进程id
%o 操作类型:"send"或"recv"
%f 文件名
%P 模块路径
%m 模块名
%t 当前时间
%u 认证的用户名(匿名时是null)
%b 实际传输的字节数
%c 当发送文件时,记录文件的校验码
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 
用来指定不进行压缩处理再传输的文件,默认值是*.gz *.tgz *.zip *.z
*.rpm *.deb *.iso *.bz2 *.tbz。
[mirror]    模块名
path=/mnt/  同步的目录
exclude=web 同步目录中去除的目录,即web 不同步
comment=data  提示信息
read only=no 只读选择,如为 yes 则不让客户端上传文件到服务器上
list=yes 服务器上提供同步数据的目录是否显示
auth users=rsync 认证用户是rsync
secrets file=/etc/rsyncd.pwd
密码文件保存路径,权限必须设置为600,用来认证客户端的秘钥文件。
格式 USERNAME:PASSWORD

rsync 端口进程

代码语言:javascript
复制
netstat -auntlp |grep 873
ps -ef |grep rsync

firewalld 策略

代码语言:javascript
复制
防火墙添加rsyncd服务开放,默认端口873
firewall-cmd --add-service=rsyncd --zone=public --permanent
重新载入防火墙
firewall-cmd --reload

rsync 本地磁盘同步数据

代码语言:javascript
复制
rsync -vlzrtogp /mnt/data /backups
rsync -vlzrtogp /mnt/data/ /backups
  • /mnt/data 表示将整个 /data目录复制到目标目录
  • /mnt/data/ 表示将 data 目录中的所以内容复制到目标目录

rsync 密码文件

代码语言:javascript
复制
echo "rsync@passwd" >/etc/rsyncd.pwd

修改权限

代码语言:javascript
复制
chmod 600 /etc/rsyncd.pwd

客户端向服务端推送

rsync服务器设置”read only=yes” 禁止客户端上传文件到服务器上

指定目录路径

rsync -vlzrtopg --progress --delete /mnt/data/ root@192.168.188.139:/data1

指定模块路径

rsync -vlzrtopg --progress --delete /mnt/data/ rsync@192.168.188.139::mirror/openeuler/OS --password-file=/etc/rsyncd.pwd

客户端从服务端拉取

指定模块路径

rsync -avz rsync@192.168.188.139::mirror/openeuler /opt/ --password-file=/etc/rsyncd.pwd

指定目录路径

代码语言:javascript
复制
rsync -avz root@192.168.188.139:/mnt/openeuler /root/

--exclude

--exclude 参数指定排除的文件或目录信息

rsync -avz --delete /mnt/openeuler/ --exclude=OS/hello --exclude=update rsync@192.168.188.139::mirror/openeuler/everything --password-file=/etc/rsyncd.pwd

rsync 数据同步限流

限制带宽1000kBytes/s

rsync -vlzrtogp --progress --delete --bwlimit=1000 远程文件 本地文件

限制带宽2M/s

rsync -vlzrtogp --progress --delete --bwlimit=2048 本地文件 远程文件

rsync 客户端参数

代码语言:javascript
复制
-v, --verbose 详细输出模式
-l, --links 保持符号链接文件
-z, --compress 在传输文件时进行压缩处理
-r, --recursive 对子目录以递归模式处理
-t, --times 保持文件时间信息
-o, --owner  保持文件属主信息(super-user only)
-p, --perms 保持文件权限
-g, --group 保持文件属组信息
--progress 在传输时显示传输过程
--delete 删除目标端比本地端多余得文件目录保持数据一致性
--exclude=web 指定排除一个不需要传输的文件匹配模式
--exclude-from=FILE 从 FILE 中读取排除规则
--include=PATTERN 指定需要传输的文件匹配模式
--include-from=FILE 从 FILE 中读取包含规则
--password-file=FILE 从 FILE 中读取口令,以避免在终端上输入口令
--bwlimit=RATE 限制传输 I/O 带宽
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档