1.Rsync 简介
1.Rsync可以实现增量的备份(主机和主机之间的数据传输)
2.面试点你们公司用得什么架构 CS/BS架构
Client/Server 客户端和服务端 类似客户端的游戏 王者荣耀 吃鸡 英雄联盟
Browse/Server 浏览器和服务端 类似网页游戏 使用浏览器访问的服务都是BS架构
3.Rsync默认监听端口873
4.全量备份和增量备份
全量备份优缺点: 占用带宽 磁盘IO 占用磁盘空间 数据安全不易丢失
增量备份优缺点: 速度快 占用较少的磁盘IO 节省磁盘空间 数据易丢失(不完整)
2.Rsync 的传输模式
三种传输模式:
本地模式: 类似cp命令 了解
语法结构:
rsync -avz 1.txt /tmp/1.txt
案例1.复制oldboy.txt 到/opt目录
[root@backup:~]
[root@backup:~]
total 0
-rw-r--r-- 1 root root 0 Jul 31 09:15 oldboy.txt
[root@backup:~]
sending incremental file list
oldboy.txt
[root@backup:~]
total 0
dr-xr-xr-x 5 root root 79 Mar 24 2023 kylin-sm-package
-rw-r--r-- 1 root root 0 Jul 31 09:15 oldboy.txt
什么是增量: 在执行一次rsync的拷贝动作发现oldboy.txt不会在拷贝。
[root@backup:~]
sending incremental file list
sent 48 bytes received 12 bytes 120.00 bytes/sec
total size is 0 speedup is 0.00
远程命令模式:
语法结构:
上传文件: 推送 push 网盘上传
rsync -avz 文件 [email protected]:/root/
下载文件: 拉取 pull 网盘下载
rsync -avz [email protected]:/etc/hosts ./
rsync: 命令
-avz: 参数
root: 对方服务器用户名称(如果不写默认按照当前登录用户的身份去远程连接)
[root@backup:~]
Authorized users only. All activities may be monitored and reported.
[email protected] password:
@: 分隔符
172.16.1.7: 主机信息 hosts主机名称 域名
[root@backup:~]
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.7 web01
[root@backup:~]
[root@backup:~]
案例1: 将41服务器上的oldboy.txt传输到172.16.1.7root的家目录
[root@backup:~]
The authenticity of host '172.16.1.7 (172.16.1.7)' can't be established. ECDSA key fingerprint is SHA256:5IRW4TiNlfS+kmXlEpwVnm+uDGASPC0Vj1ncCswZL2Q. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes # 输入yes Warning: Permanently added '172.16.1.7' (ECDSA) to the list of known hosts. Authorized users only. All activities may be monitored and reported. [email protected]'s password:
sending incremental file list
案例2.将1.7服务器上的hosts文件下载到当前主机的当前目录
[root@backup:~]
Authorized users only. All activities may be monitored and reported.
[email protected]'s password: receiving incremental file list hosts 案例3.拷贝目录 将41oldboy目录下所有文件传输到1.7的家目录 注意: rsync传输目录时,目录价/ 表示目录下面所有文件,不加/表示目录本身 [root@backup:~]#rsync -avz oldboy/ web01:/root/ Authorized users only. All activities may be monitored and reported. root@web01's password:
sending incremental file list
./
1.txt
hosts
oldboy.txt
案例4.拷贝目录及目录下所有文件到7
[root@backup:~]
Authorized users only. All activities may be monitored and reported.
root@web01's password:
sending incremental file list
oldboy/
oldboy/1.txt
oldboy/hosts
oldboy/oldboy.txt
远程命令模式小结:
1.可以上传文件
rsync -avz file [email protected]:/root/
2.可以下载文件
rsync -avz [email protected]:/etc/hosts ./
3.Rsync 服务
守护进程模式(CS架构)
1.安装rsync服务 41备份服务器部署
[root@backup:~]
2.配置rsync服务
配置文件: /etc/rsyncd.conf
[root@backup:~]
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 oldboyedu backup!
path = /backup
-----------------------------
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 oldboyedu backup!
path = /backup
-----------------------修改配置文件需要重启服务
[root@backup:~]
-----------------
推送语法格式: rsync -avz [email protected]::backup
-----------------
3.根据配置创建必要的信息
1)创建用户rsync
[root@backup:~]
[root@backup:~]
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)
2)配置用户名和密码写入到密码文件中
[root@backup:~]
[root@backup:~]
rsync_backup:123456
修改密码文件权限为600
[root@backup:~]
[root@backup:~]
-rw------- 1 root root 20 Jul 31 10:25 /etc/rsync.passwd
3)创建目录
[root@backup:~]
[root@backup:~]
total 0
[root@backup:~]
drwxr-xr-x 2 root root 6 Jul 31 10:26 /backup
修改目录的属主属组为rsync用户
[root@backup:~]
[root@backup:~]
drwxr-xr-x 2 rsync rsync 6 Jul 31 10:26 /backup/
4.启动rsync服务
[root@backup:~]
[root@backup:~]
检查端口是否启动
[root@backup:~]
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 6318/rsync
5.测试rsync服务
客户端测试:
推送:语法格式 最后两个冒号,后面是模块的名称而不是路径。
rsync -avz [email protected]::backup
[root@web01:~]
Password:
sending incremental file list
hosts
sent 140 bytes received 43 bytes 73.20 bytes/sec
total size is 158 speedup is 0.86
下载: 从backup服务器中下载文件
[root@web01:~]
4.Rsync 参数
1.rsync排除推送的文件 --exclude
[root@backup:~]
[root@backup:~]
total 0
-rw-r--r-- 1 root root 0 Jul 31 10:46 1.txt
-rw-r--r-- 1 root root 0 Jul 31 10:46 2.txt
-rw-r--r-- 1 root root 0 Jul 31 10:46 3.txt
drwxr-xr-x 2 root root 50 Jul 31 09:58 oldboy
[root@backup:~]
Authorized users only. All activities may be monitored and reported.
root@web01's password: sending incremental file list 2.txt 3.txt 2.排除多个文件使用 ——exclude-from=file [root@backup:~]#cat /tmp/1.log 1.txt 2.txt [root@backup:~]#rsync -avz *.txt --exclude-from=/tmp/1.log root@web01:/root/ Authorized users only. All activities may be monitored and reported. root@web01's password:
sending incremental file list
3.txt
3.使用限速功能传输文件 --bwlimit=1M 默认kb
[root@backup:~]
Authorized users only. All activities may be monitored and reported.
root@web01s password:
sending incremental file list
04.mp4
15,302,656 13% 1.12MB/s 0:01:28
4.--delete 两端数据一致
1)我有啥,你必须和我一样
第一步: 41
[root@backup:~]
[root@backup:~]
第二步: 41拷贝oldboy目录到web01
[root@backup:~]
第三步: 在web01oldboy目录下创建10个文件
[root@web01:~]
[root@web01:~]
total 8
-rw-r--r-- 1 root root 0 Jul 31 11:10 10.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 1.log
-rw-r--r-- 1 root root 44 Jul 15 09:57 1.txt
-rw-r--r-- 1 root root 0 Jul 31 11:10 2.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 3.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 4.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 5.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 6.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 7.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 8.log
-rw-r--r-- 1 root root 0 Jul 31 11:10 9.log
-rw-r--r-- 1 root root 158 Jun 23 2020 hosts
-rw-r--r-- 1 root root 0 Jul 31 09:15 oldboy.txt
最后执行同步的命令: 结果是web01新创建的文件被删除。
[root@backup:~]
2)你有啥,我必须和你一样
1,2,3步骤和上面一样
在重新创建10个文件
[root@web01:~]
[root@web01:~]
total 8
-rw-r--r-- 1 root root 0 Jul 31 11:18 10.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 1.log
-rw-r--r-- 1 root root 44 Jul 15 09:57 1.txt
-rw-r--r-- 1 root root 0 Jul 31 11:18 2.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 3.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 4.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 5.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 6.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 7.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 8.log
-rw-r--r-- 1 root root 0 Jul 31 11:18 9.log
-rw-r--r-- 1 root root 158 Jun 23 2020 hosts
-rw-r--r-- 1 root root 0 Jul 31 09:15 oldboy.txt
执行同步命令: 结果41服务器上oldboy多了10个文件和远端服务器一样
[root@backup:~]
5.使用密码文件传输 --password-file=密码文件
守护进程举例:
1)将密码写入文件中
[root@web01:~]
2)授权600权限
[root@web01:~]
[root@web01:~]
-rw------- 1 root root 7 Jul 31 11:24 /etc/rsync.pass
3)使用指定密码的参数推送
[root@web01:~]
sending incremental file list
3.txt
案例.免交互使用密码参数
[root@web01:~]
tar zcf /opt/etc.tar.gz /etc
rsync -avz /opt/etc.tar.gz [email protected]::backup --password-file=/etc/rsync.pass
6.RSYNC_PASSWORD变量
[root@web01:~]
export RSYNC_PASSWORD=123456
tar zcf /opt/etc.tar.gz /etc
rsync -avz /opt/etc.tar.gz [email protected]::backup
5.rsync 备份案例
可重复使用。
1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2018-09-02
需求: 定时任务配置文件 /etc/passwd
目录创建方式:
[root@web01:~]
[root@web01:~]
total 0
drwxr-xr-x 2 root root 6 Jul 31 11:37 web01_10.0.0.7_2024-07-31
2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2018-09-02
[root@web01:~]
[root@web01:~]
/backup/web01_10.0.0.7_2024-07-31
[root@web01:~]
tar: Removing leading / from member names
[root@web01:~]
total 5220
-rw-r--r-- 1 root root 5342620 Jul 31 11:38 etc.tar.gz
[root@web01:~]
total 5220
-rw-r--r-- 1 root root 5342620 Jul 31 11:38 etc.tar.gz
3.客户端最后将备份的数据进行推送至备份服务器
rsync -avz $code_dir [email protected]::backup
4.客户端每天凌晨1点定时执行该脚本
00 01 * * * root sh xxx.sh
5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间 写入脚本
模拟7天前的时间 date -s
find /backup/* -mtime +7|xargs rm -rf
知识点重点小结:
1.远程命令模式 两台主机之间相互传送数据
rsync -avz 1.txt 172.16.1.41:/root/
rsync -avz 172.16.1.41:/etc/hosts ./
2.rsync服务配置流程
安装
配置
创建必要的数据
启动
测试
3.重要的参数
RSYNC_PASSWORD 写脚本必用
export RSYNC_PASSWORD=123456
--exclude=file
--delete 慎重
--bwlimit=1M
文章评论