002 rsync守护进程传输方式详解

传输模式

1、本地方式(类似于cp,不支持推送和拉取,只是单纯的复制)
2、远程方式(类似于scp,又不同于scp)
3、守护进程方式(客户端和服务端)

本地方式

#语法
rsync [参数] 源文件(可多个) 目标地址 本地路径

#类似于cp,但是cp是全量复制并且会修改文件属性,rsync是增量复制,会保证文件属性不变

远程方式

#pull拉取语法
rsync [参数] 源文件(可多个)  目标地址 本地路径

#实例
[root@web1 ~]# rsync -avz root@192.168.15.100:/tmp/ ./

#push推送语法
rsync [参数] 要推送的文件  远程主机路径

#实例
rsync -avz ./back/ root@192.168.15.102:/root/

rsync

既可以本地拷贝也可以远程

-a	#归档(压缩)模式,表示以递归方式传输文件,并保持所有文件属性
-z	#在传输过程中进行压缩
-v	#显示传输的过程
-n	#执行一个没有实际更改的试运行,只会显示文件会被如何操作
-c	#让自动跳过基于校验和而非默认的修改时间以及文件大小
--delete  # 将备份的当作镜像,完全保持一致

--backup	#对目标目录下已经存在的一个文件做备份
--backup-dir=/xxx/yyy	#可以自定义一个目录去备份
--suffix="xxx"	#可以指定区分的后缀名

--exclude  # 排除
--exclude="xxx"

--include # 包含

rsync -a --include="*.txt" --exclude="*" /111/ /222/
#这个意思是会排除所有的文件,但是会包括1.txt,2.txt等文件

--bwlimit=MB/s  #限速传输
--link-dest  #指定基准目录

守护进程传输模式

#为什么使用守护进程模式
1、rsync传输时,使用的是系统用户和系统用户的密码,非常的不安全
2、使用普通用户又会出现权限问题

服务端

#配置rsync
#查找配置文件
[root@backup ~]# rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd

#编辑配置文件
uid = rsync							#启动服务的用户id---->控制的是客户端的权限
gid = rsync							#启动服务的用户组id
port = 873							#服务默认监听端口
fake super = yes					#无需使用root启动
use chroot = no						#安全机制
max connections = 200				#最大连接数
timeout = 600						#超时时间
ignore errors						#错误忽略
read only = false					#只读
list = false						#查看模块列表
auth users = rsync_backup			#定义虚拟用户
secrets file = /etc/rsync.passwd		#定义虚拟用户密码
log file = /var/log/rsyncd.log			#日志文件

[backup]							#模块
comment = welcome to my backup!			#模块的备注
path = /root/backup						#服务器真实的路径


#根据配置文件操作
1、创建用户
[root@backup ~]# useradd rsync -s /sbin/nologin -M	#不登录,不创建家目录

2、创建密码文件
[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd			#密码是用户名 : 密码格式
rsync_backup:123456
chmod 600 /etc/rsync.passwd		#切记要授权!!!!!

3、创建备份目录
[root@backup ~]# mkdir backup	#创建文件夹
[root@backup ~]# chown -R rsync.rsync /backup/		#授权目录


#启动服务
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# rsync --daemon

#验证启动
[root@backup ~]# netstat -lntp | grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1707/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      1707/rsync          
[root@backup ~]# ps -ef | grep rsync
root       1707      1  0 21:21 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
root       1714   1619  0 21:23 pts/0    00:00:00 grep --color=auto rsync

配置文件

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 = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log

[backup]
comment = welcome to my backup!
path = /root/backup

客户端推拉操作

#push推送语法
[root@web1 ~]# rsync -avz gaiwangka.sh rsync_backup@192.168.15.101::backup
#双冒号后面跟的是模块名,配置文件中模块的路径为存储路径
Password: 
sending incremental file list
gaiwangka.sh

sent 206 bytes  received 43 bytes  71.14 bytes/sec
total size is 194  speedup is 0.78

#pull拉取语法
[root@web1 ~]# rsync -avz rsync_backup@192.168.15.101::backup ./1/
Password: 
receiving incremental file list./
gaiwangka.sh
sent 50 bytes  received 253 bytes  67.33 bytes/sec
total size is 194  speedup is 0.64

客户端推拉数据方法

方式一:输入密码

繁琐

方式二:指定密码文件

#创建密码文件
[root@web1 1]# echo "***" > /etc/rsync.passwd 	#这里的文件是纯密码,不需要用户
[root@web1 1]# chmod 600 /etc/rsync.passwd 
#要授权!!

方式三:临时环境变量

export RSYNC_PASSWORD=*****
#想要永久生效写到环境变量里 
vim /etc/profile.d/HJBL.sh
#小细节:这里写环境变量的时候,尽量将环境变量给写到/etc/profile.d/*.sh中,从而降低出错风险
#补充
#防火墙设置
[root@backup backup]# firewall-cmd --add-port=873/tcp
[root@backup backup]# firewall-cmd --list-all

权限问题的强调

#1、服务端进程的用户身份,与当前登录的用户有关(密码文件有关)
以什么用户提交的命令,该进程的身份就是该用户
即当前登录的用户是谁,进程的用户身份就是谁

#2、配置文件中的uid与gid是为了控制客户端的权限
#补充
#防火墙设置
[root@backup backup]# firewall-cmd --add-port=873/tcp
[root@backup backup]# firewall-cmd --list-all

常见报错





#chdir error
代表文件夹不存在,检查配置文件中的模块的path路径
或者你没有创建文件夹
posted @ 2021-03-25 17:02  BaiM0  阅读(430)  评论(0编辑  收藏  举报