[转帖]03-rsync传输模式(本地传输、远程方式传输、守护进程模式传输)

rsync,传输,模式,本地,远程,方式,守护,进程 · 浏览次数 : 0

小编点评

1. **全局模块** - 针对所有局部模块生效 - 定义备份路径 - 多个备份路径就定义多个局部模块全局模块参数 - 局部模块参数 2. **局部模块** - 每个模块定义备份路径 - 多个模块参数定义多个局部模块全局模块参数 3. **创建虚拟用户认证文件** -左边用户右边密码 -中间冒号隔开 4. **配置服务端** -定义密码文件 -创建600权限文件 -设置读权限 -设置写权限 5. **拉时权限检查** - 如果没有读权限,则会报错 -同样推时也要主要服务端有没有写权限 6. **排查1.客户端使用rsync报错信息** - auth failed on module backup -查看服务端/var/log/messages日志文件,一般这种错误就是认证文件权限导致的解决办法 7. **排查2.使用变量,强烈推荐** - export RSYNC_PASSWORD=123456 - 使用变量,可以强密码 8. **排查4.服务端有写权限** - 如果服务端有写权限,则无法拉取数据 -同样推时也要主要服务端有写权限 9. **归纳总结** - 生成内容时需要带简单的排版

正文

https://developer.aliyun.com/article/885801?spm=a2c6h.24874632.expert-profile.282.7c46cfe9h5DxWK

  

简介: 1.Rsync传输模式 rsync大致使用三种主要的数据传输方式 本地方式 远程方式 守护进程 1.1.rsync语法格式 本地传输 rsync [option] src dest 远程通道传输

1.Rsync传输模式

rsync大致使用三种主要的数据传输方式

本地方式

远程方式

守护进程

1.1.rsync语法格式

本地传输

rsync [option] src dest

远程通道传输

pull(拉):rsync [option] [user@]host:src dest(从服务端下载至本地,src就是服务端的数据,dest就是本地的存储路径)

 

push(推):rsync [option] src [user@]host:dest(从本地上传至服务器,src就是本地存储,dest就是远程服务端)

 

守护进程方式传输

 

pull(拉):rsync [option] [user@]host::src dest

 

rsync [option] rsync://[user@]host[:port]/src…[dest]

 

push(推):rsync [option] src… [user@]host::dest

 

rsync [option] src… rsync://[user@]host[:port]/dest

命令参数image.png1.2.本地方式

本地方式就类似于cp命令

1.本地传输方式,单个主机本地之间的数据传输(此时类似于cp命令)

rsync [option] src dest

rsync --备份命令

[option] --选项

src --本地源文件

dest --本地目标文件

最常用的选项-avz

1.2.1.文件同步

[root@localhost ~]# rsync /etc/passwd /data/


[root@localhost ~]# rsync -avz /etc/fstab /data/
sending incremental file list
fstab

sent 346 bytes  received 35 bytes  762.00 bytes/sec
total size is 465  speedup is 1.22

[root@localhost ~]# rsync -avzP /etc/profile /data/
sending incremental file list
profile
          1,819 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)

sent 934 bytes  received 35 bytes  1,938.00 bytes/sec
total size is 1,819  speedup is 1.88
[root@localhost ~]#

新建几个账号再同步一次/etc/passwd,会有明显的编号,rsync每次都是增量数据

[root@localhost ~]# for i in {1..10};do
> useradd jiang$i 
> done
[root@localhost ~]# ls /home/
jiang1  jiang10  jiang2  jiang3  jiang4  jiang5  jiang6  jiang7  jiang8  jiang9  jxl
[root@localhost ~]# rsync -avz /etc/passwd /data/
sending incremental file list
passwd

sent 1,184 bytes  received 35 bytes  2,438.00 bytes/sec
total size is 2,999  speedup is 2.46

1.2.2.目录同步

两种区别命令后面带“/”和不带"/"

总结:

如果需要同步的是目录里面的内容,命令中目录的后面必须要加/或者/*

如果要同步的是目录本身及其内容,则命令中只需写目录名

完全同步:加–delete选项,源和目标内容完全一致

带“/”案例

带/表示只同步该目录下的所以文件包括目录

[root@localhost ~]# rsync -avx /data/ /opt
sending incremental file list
./
fstab
passwd
profile
dir1/
dir2/
dir3/
[root@localhost ~]# ls /opt/
fstab  passwd  profile dir1  dir2  dir3 

不带“/”案例

会将整个目录同步过去,也就是将目录本身即自身下的所有文件同步过去

[root@localhost data]# rsync -zva /data /opt/
sending incremental file list
data/
data/fstab
data/passwd
data/profile
data/dir1/
data/dir2/
data/dir3/

sent 2,521 bytes  received 89 bytes  5,220.00 bytes/sec
total size is 5,283  speedup is 2.02
[root@localhost data]# ls /opt/
data  dir1  dir2  dir3  fstab  passwd  profile 

[root@localhost data]# tree /opt/
/opt/
├── data
│   ├── dir1
│   ├── dir2
│   ├── dir3
│   ├── fstab
│   ├── passwd
│   └── profile
├── dir1
├── dir2
├── dir3
├── fstab
├── passwd
└── profile

delete选项主要作用就是删除目标端存在但源端不存在的文件,保持双方一致,谨慎使用

1.首选删除几个文件,和目标端保持不一致
[root@localhost data]# rm -rf dir3/
[root@localhost data]# rm -rf profile 
[root@localhost data]# tree
.
├── dir1
├── dir2
├── fstab
└── passwd

2 directories, 2 files
[root@localhost data]# tree /opt/
/opt/
├── data
│   ├── dir1
│   ├── dir2
│   ├── dir{3}
│   ├── fstab
│   ├── passwd
│   └── profile
├── dir1
├── dir2
├── dir3
├── fstab
├── passwd
└── profile

7 directories, 6 files

2.开始同步,使用--delete选项
[root@localhost data]# rsync -avz /data/ /opt/ --delete
sending incremental file list
deleting dir3/
deleting data/dir{3}/
deleting data/dir2/
deleting data/dir1/
deleting data/profile
deleting data/passwd
deleting data/fstab
deleting data/
deleting profile
./

sent 144 bytes  received 139 bytes  566.00 bytes/sec
total size is 3,464  speedup is 12.24
[root@localhost data]# tree /opt/
/opt/
├── dir1
├── dir2
├── fstab
└── passwd

2 directories, 2 files
[root@localhost data]# 

1.3.远程方式

远程方式和scp命令格式一致,都是基于ssh协议

远程和本地服务器都要安装rsync

将本地文件上传至远程服务器(push)
[root@localhost ~]# rsync -avz /etc/hosts root@192.168.81.220
sending incremental file list
hosts

sent 169 bytes  received 35 bytes  408.00 bytes/sec
total size is 195  speedup is 0.96

将文件从远程服务器下载到本地(pull)
[root@localhost ~]# rsync -avz root@192.168.81.220:/root/aa.txt .
root@192.168.81.220's password: 
receiving incremental file list
aa.txt

sent 43 bytes  received 92 bytes  30.00 bytes/sec
total size is 3  speedup is 0.02

1.4.守护进程传输模式

守护进程是rsync自身非常重要的功能,不需要用户真实存在,路径也可以自定义,不会暴露真实路径

1.4.1.rsync配置文件详解

rsync分为全局模块和局部模块,全局模块针对所有局部模块生效,局部模块用来定义备份路径,有多个备份路径就定义多个局部模块

全局模块参数image.png局部模块参数image.png

1.4.2.服务器端配置-多模块

虚拟用户----系统用户

管理员不想让别人知道自己的真实身份,因此会伪装自己,当用户访问虚拟用户时会跳转至系统程序用户,也就是访问rsyncd_backup时会跳转到rsync程序用户

1.安装软件包(多台服务器都需要安装)

[root@localhost ~]# yum -y install rsync

2.修改配置文件

1)查找配置文件
两种方法:
[root@localhost ~]# rpm -ql rsync | grep etc
[root@localhost ~]# rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd

2)修改配置文件
[root@localhost ~]# vim /etc/rsyncd.conf 
#全局模块
uid = rsync
gid = rsync
port 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsyncd_backup
secrets file = /etc/rsyncd_passwd
log file = /var/log/rsync/rsync.log
#局部模块     
[web_backup]
comment = commit
path = /data

3)花里胡哨增加一个模块
[root@localhost data]# cat >> /etc/rsyncd.conf <<EOF
> [mysql_backup]
> comment = mysql bak
> path = /mysql_bak
> EOF

3.创建rsync用户

[root@localhost ~]# useradd rsync -M  -s /sbin/nologin

4.创建目录,并修改所属

[root@localhost ~]# mkdir /data
[root@localhost ~]# mkdir /mysql_bak
[root@localhost ~]# chown -R rsync:rsync /data
[root@localhost ~]# chown -R rsync:rsync /mysql_bak

5.创建虚拟用户认证文件

左边用户右边密码,中间冒号隔开
[root@localhost ~]# echo "rsyncd_backup:123456" >/etc/rsyncd_passwd
[root@localhost ~]# chmod 600 /etc/rsyncd_passwd

6.启动服务

[root@localhost ~]# systemctl restart rsyncd
[root@localhost ~]# systemctl enable rsyncd
[root@localhost ~]# lsof -i:873
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   67937 root    3u  IPv4 152956      0t0  TCP *:rsync (LISTEN)
rsync   67937 root    5u  IPv6 152957      0t0  TCP *:rsync (LISTEN)

1.4.3.客户端配置

1.安装软件包

[root@localhost ~]# yum -y install rsync

2.推:上传,需要考虑写权限

将本地/etc/passwd文件推送至服务端web_backup模块中
[root@jxl ~]# rsync -avz /etc/passwd rsyncd_backup@192.168.81.210::mysql_backup

清空服务端web_backup模块中的内容
[root@jxl ~]# rsync -avz /null/ rsyncd_backup@192.168.81.210::web_backup --delete

3.拉:下载,需要考虑读权限

将服务器mysql_backup中的数据下载到本地

[root@jxl ~]# rsync -avz rsyncd_backup@192.168.81.210::mysql_backup /tmp/
Password: 
receiving incremental file list
./
passwd

sent 50 bytes  received 1,191 bytes  496.40 bytes/sec
total size is 2,758  speedup is 2.22

4.免密登录

方法一:定义密码文件

[root@jxl ~]# echo "123456" > /etc/rsyncd_passwd
[root@jxl ~]# chmod 600 /etc/rsyncd_passwd
[root@jxl ~]# rsync -avz /etc/vsftpd/vsftpd.conf rsyncd_backup@192.168.81.210::mysql_backup --password-file=/etc/rsyncd_passwd
sending incremental file list
vsftpd.conf

sent 2,332 bytes  received 43 bytes  4,750.00 bytes/sec
total size is 5,157  speedup is 2.17

方法二:使用变量,强烈推荐,常用于脚本中

[root@jxl ~]# export RSYNC_PASSWORD=123456
[root@jxl ~]# echo $RSYNC_PASSWORD
123456
[root@jxl ~]# rsync -avz /etc/yum.repos.d/CentOS-Base.repo rsyncd_backup@192.168.81.210::mysql_backup 
sending incremental file list
CentOS-Base.repo

sent 666 bytes  received 43 bytes  472.67 bytes/sec
total size is 2,523  speedup is 3.56

1.4.4.排查

1.客户端使用rsync报错信息:auth failed on module backup

可以查看服务端/var/log/messages日志文件,一般这种错误就是认证文件权限导致的

image.png解决办法:chmod 600 /etc/rsyncd_passwd

2.拉时需要注意有没有读权限,如果没有读权限则会报错,同样推时也要主要服务端有没有写权限

与[转帖]03-rsync传输模式(本地传输、远程方式传输、守护进程模式传输)相似的内容:

[转帖]03-rsync传输模式(本地传输、远程方式传输、守护进程模式传输)

https://developer.aliyun.com/article/885801?spm=a2c6h.24874632.expert-profile.282.7c46cfe9h5DxWK 简介: 1.Rsync传输模式 rsync大致使用三种主要的数据传输方式 本地方式 远程方式 守护进程 1

[转帖]0.03秒引发的网络血案

https://www.jianshu.com/p/45085331b9f0 背景 用户Pike版Openstack,Firewall drivers为Openvswitch。Openstack内一租户网络下多台虚拟机中部署一K8S集群,其中Openstack下租户网络使用VxLAN,K8S集群采用

[转帖]openeuler22.03实时系统安装及部署

openEuler预言 openEuler特性 融进了中科院软件所贡献的 RISC-V 新指令集架构支持内核的多核扩展性能力大大增强,提升了 CPU 多核的并行度,性能提升 20%采用轻量级虚拟化引擎 StratoVirt,一套架构支持虚机、安全容器、Serverless 三种场景,单虚机启动时间小

[转帖]openEuler 22.03 LTS 版本发布,已有 8 家伙伴计划推出商业发行版

https://zhuanlan.zhihu.com/p/500525072 4 月 13 日-15 日,欧拉开发者大会(openEuler Developer Day 2022)在线上和线下同步举行。大会以“一起创未来,欧拉更精彩”为主题,旨在推动 openEuler 在服务器、云计算、边缘计算和

[转帖]openEuler 22.03 LTS 新特性解读 | Preempt_RT

https://www.modb.pro/db/392580 来自 Industrial-Control SIG的郭皓 将在 openEuler Developer Day 2022 分享 《openEuler在嵌入式和实时性方面的思考与实践》 欢迎大家观看直播 openEuler 22.03 LT

[转帖]Linux 平台使用shc 工具加密shell 脚本

2021-08-03 20:4510030原创Linux 本文链接:https://www.cndba.cn/dave/article/4642 1 shc 工具说明 shell 脚本是常用脚本,运维中经常使用,但有时候在shell 脚本中会包含一些敏感的信息,比如密码或者特殊的参数,此时我们就可以

[转帖]一个空格导致应用启动失败的问题排查

2021-02-03 分类:Java / spring 阅读(2930) 评论(2) GitHub 24k Star 的Java工程师成神之路,不来了解一下吗! 先交代一下背景,在很久之前,我曾经封装过一个分库分表的扫表工具——Full Table Scanner,主要实现方式是通过使用TDDL H

[转帖]SQL Server 体系结构中的2个主要引擎 说明

2020-03-18 16:2321450原创SQLServer 本文链接:https://www.cndba.cn/dave/article/4498 SQL Server 由两个主要引擎组成∶关系引擎(relational engine)和存储引擎(storage engine)。 1 关系引擎

[转帖]linux性能优化笔记之CPU篇

http://blog.trumandu.top/2019/03/02/linux%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E7%AC%94%E8%AE%B0%E4%B9%8BCPU%E7%AF%87/ cpu优化用到的命令 mpstat进程相关统计工具,cpu/io

[转帖]让 CPU 告诉你硬盘和网络到底有多慢

https://cizixs.com/2017/01/03/how-slow-is-disk-and-network/ 简介 经常听到有人说磁盘很慢、网络很卡,这都是站在人类的感知维度去表述的,比如拷贝一个文件到硬盘需要几分钟到几十分钟,够我去吃个饭啦;而从网络下载一部电影,有时候需要几个小时,我都