3.部署rsync
rsync介绍
rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及曾量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。
SCP的使用
## 远程copy,scp
scp 源文件 目标
# 推文件
scp /tmp/yum.log root@10.0.0.41:/root
# 推目录
scp -r /etc root@10.0.0.41:/root
# 拉文件
scp root@10.0.0.41:/root /tmp/yum.log
# 拉目录
scp -r root@10.0.0.41:/root /etc
# 一些服务的端口号
ssh:22
ftp:21
rsync:873
C/S 架构:
Client/Server
B/S
Browser/Server
端口的范围:1-65535
rsync备份类型
-
全量备份(支持)
-
增量备份(支持)
-
差异备份(不支持差异备份)
Rsync的传输模式
- 本地传输模式(跟命令cp一样)
# 语法
Local: rsync [OPTION...] SRC... [DEST]
## 拷贝文件
[root@backup ~]# rsync /root/3 /usr/local/src/
## 拷贝目录
[root@backup ~]# rsync -a /etc /usr/local/src/
- 远程传输模式(跟命令scp一样),这种模式是借助SSH的通道进行传输(ssh端口),SSH端口改变会报错
## Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
# 拉:rsync [选项...] 用户名@主机IP:路径 本地文件或目录
[root@backup ~]# rsync -avz root@172.16.1.7:/etc/hostname /usr/local/games/
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
# 推:rsync [选项...] 本地文件或目录 用户名@主机IP:路径
[root@backup ~]# rsync -avz /backup/2020-05-06_web01_etc.tar.gz root@10.0.0.7:/tmp/
# 注意
当推或者拉文件时如果没有写用户,则传输过去的文件权限就是这个用户的权限
远程传输方式用户需要注意,如果传输时不是root用户,其他用户则会报错,权限不足
# 权限不足报错
rsync: mkstemp "/root/.host_ip.sh.nrcrr0" failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2]
- 守护进程模式(服务)
## 语法:
## Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
# 拉:rsync [-avz] zls_bak@10.0.0.41::[模块] 源文件 目标
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST](忘记它)
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
# 推:rsync [-avz] 源文件 zls_bak@10.0.0.41::[模块] 目标
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST(忘记它)
注意:推和拉的区别,就是源文件的位置在哪里,拉:源文件在后面。
## rsync 重要选项 常用
-a #归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
--delete #让目标目录和源目录数据保持一致
--password-file=xxx #使用密码文件
------------------- -a 包含 ------------------
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-D #保持设备文件信息
----------------------------------------------
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
环境准备
| 角色 | 外网IP(WAN) | 内网IP(LAN) | 主机名 |
|---|---|---|---|
| WEB | eth0:10.0.0.7 | eth1:172.16.1.7 | web01 |
| NFS | eth0:10.0.0.31 | eth1:172.16.1.31 | nfs01 |
| Rsync | eth0:10.0.0.41 | eth1:172.16.1.41 | backup |
服务端:我们把备份的文件放在谁磁盘上,谁就是服务端 ,服务端可以写几个不同的模块
# 1.安装rsync服务
[root@backup ~]# yum install -y rsync
# 2.修改配置文件
[root@backup ~]# vim /etc/rsyncd.conf
# 指定启动rsync服务的用户id
uid = rsync
# 指定启动rsync服务的用户组id
gid = rsync
# 指定rsync服务启动的端口
port = 873
# 假装是root
fake super = yes
# 禁锢path目录
use chroot = no
# 最大连接数是200
max connections = 200
# 超时时间是600s
timeout = 600
# 忽略错误
ignore errors
# 可读可写
read only = false
# 其它客户端用户不允许查看模块名
list = false
# rsync服务的日志所在路径
log file = /var/log/rsyncd.log
########### 命令相关配置 #############
auth users = jkz_bak
secrets file = /etc/rsync_pass
[jkz] [zls]
comment = welcome to oldboyedu backup! comment = 1232131 随便写
path = /backup path = /opt
# 3.创建rsync用户,不允许登入,不创建家目录
[root@backup ~]# useradd rsync -s /sbin/nologin -M
# 4.创建虚拟账号和密码文件
[root@backup ~]# echo 'jkz_bak:123' > /etc/rsync_pass
# 5.设置密码文件为600
[root@backup ~]# chmod 600 /etc/rsync_pass
# 6.创建rsync的备份目录
[root@backup ~]# mkdir /backup
# 7.给目录的属主和属组改为rnync
[root@backup ~]# chown rsync.rsync /backup/
# 8.启动和开机自启rsync服务
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
# 9.检查端口和进程
[root@backup ~]# netstat -lntup |grep 873
[root@backup ~]# ps -ef | grep [r]sync
部署客户端
rsync客户端不用修改配置文件
方法一 比较麻烦 ,使用的模块 [jkz]
# 1.安装rsync
[root@web01 ~]# yum install -y rsync
# 2.客户端需要创建一个密码文件
[root@web01 ~]# vim /etc/rsync.pass
123
# 3.修改密码文件的权限为600
[root@web01 ~]# chmod 600 /etc/rsync.pass
# 4.从客户端往服务端推送重要备份文件
rsync [-avz] 源文件 jkz_bak@10.0.0.41::[模块]
[root@web01 ~]# rsync -avz /etc/shadow jkz_bak@10.0.0.41::jkz --password-file=/etc/rsync.pass
方法二 写脚本常用 ,使用的模块 [zls]
[root@web01 ~]# export RSYNC_PASSWORD=123 临时生效,写入换进变量就能永久生效
# 写完就可以直接传输,不需要创建密码文件
[root@web01 ~]# rsync -avz /etc/shadow zls_bak@10.0.0.41::zls
rsync的特别的参数
# 指定排除不需要传输的文件模式 --exclude=PATTERN
rsync -avz /etc/shadow zls_bak@10.0.0.41::zls --exclude=指定的文件
# 文件名所在的目录文件
--exclude-from=file
#限速传输 --bwlimit=100(默认单位为M)
rsync -avz /etc/shadow zls_bak@10.0.0.41::zls --exclude=100
#断点续传
--partial
#让目标目录和源目录数据保持一致,当源目录有文件被删除增加时,目标文件也被删除增加
--delete

浙公网安备 33010602011771号