day028-二阶段-rsync

5次阅读
没有评论

2026年4月15日

知识点回顾

网络:
1.抓包tcpdump 按ip 按端口 按协议 指定源或指定目标 and or not
2.网络常用命令:
    Linux:ip,ns,namp,iftop,traceroute,nslookup,telnet,ss,netstat,ping,ifconfg,dstat
    windows: ipconfig,ipconfig all,tracert,telnet,ping
基础重点:
1.命令
2.目录下存放的东西
3.相关配置文件含义 网卡 dns ...
4.打包压缩
5.软件安装
6.用户管理
7.权限管理
8.磁盘管理
9.相关案例
10.进程管理
11.三剑客

二阶段开篇:
1.相关名词概念:架构、集群、高可用、负载均衡、微服务、高并发,静态动态数据
2.优化系统:
    1)系统初始化、恢复出厂设置或重装系统
    2)优化仓库,更改国内源、添加扩展仓库epel
    3)安装常用工具,ntpdate、screeen、network-scrips、tree、lrzsz、iftop ...
    4) 添加多块网卡
    5)优化防火墙
    6)selinux防火墙
    7)SSH优化
    8)加大文件描述符
    9)卸载tmp
    10)内核优化
3.克隆操作系统
    1.优化系统快照
    2.克隆系统
    3.改主机名
    4.改IP
    5.做快照
    6.xshell连接会话
---------------
操作系统优化过什么?

01.rsync

作用:rsync为增量拷贝文件
1.远程访问模式(主机和主机之间互相进行数据拷贝)
2.守护进程模式(以服务端方式运行rsync)
3.本地模式(类似cp)
1.rsync远程访问模式
语法结构:
        rsync -avz 用户名@主机:路径
rsync   #命令
-avz    #参数
用户名   #root
@       #分隔符
主机     #ip地址、域名、主机名称

#注意事项:
1.在使用rsync远程拷贝目录时 目录加oldboy/ 表示oldboy目录下的所有文件不包含oldboy目录本身,如果不加/ oldboy 表示oldboy目录以及下面的所有文件。
2.注意远程拷贝过程中目录是否加目录
[root@backup ~]# rsync -avz  oldboy 10.0.0.7:/root/oldboy #表示推送到oldboy目录下
[root@backup ~]# rsync -avz  oldboy 10.0.0.7:/root/ #表示推送到root目录下
推送(push)案例1:将41服务器上1.txt拷贝到10.0.0.7的家目录
#41-backup执行
[root@backup ~]# rsync -avz 1.txt 10.0.0.7:~    #不指定用户默认当前登录用户

#7-web01查看
[root@web01 ~]# ll
总用量 8
-rw-r--r-- 1 root root    0  4月 15 13:34 1.txt
推送(push)案例2:将41服务器上的oldboy目录拷贝到web01服务器
准备环境:
[root@backup ~]# mkdir oldboy
[root@backup ~]# touch oldboy/{1..3}.txt
[root@backup ~]# tree oldboy/
oldboy/
├── 1.txt
├── 2.txt
└── 3.txt
#加/ 拷贝目录下所有文件
[root@backup ~]# rsync -avz oldboy/ 10.0.0.7:/root/

Authorized users only. All activities may be monitored and reported.
root@10.0.0.7's password: 
sending incremental file list
./
1.txt
2.txt
3.txt

#不加/拷贝oldboy目录
[root@backup ~]# rsync -avz oldboy 10.0.0.7:/root/

Authorized users only. All activities may be monitored and reported.
root@10.0.0.7's password: 
sending incremental file list
oldboy/
oldboy/1.txt
oldboy/2.txt
oldboy/3.txt
拉取(pull)案例1:将web01服务器上的hosts文件拉取到本地
[root@backup ~]# rsync -avz 10.0.0.7:/etc/hosts .
[root@backup ~]# ll hosts 
-rw-r--r-- 1 root root 158  6月 23  2020 hosts

#错误示范:/etc/hosts/结尾加/表示hosts下所有,会把hosts当成目录
[root@backup ~]# rsync -avz 10.0.0.7:/etc/hosts/ .

Authorized users only. All activities may be monitored and reported.
root@10.0.0.7's password: 
receiving incremental file list
rsync: change_dir "/etc/hosts" failed: Not a directory (20)

sent 8 bytes  received 73 bytes  23.14 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1659) [Receiver=3.1.3]
rsync: [Receiver] write error: Broken pipe (32)
拉取(pull)案例2:将web01服务器上的oldboy目录拉取到本地
[root@backup ~]# rsync -avz 10.0.0.7:/root/oldboy 
[root@backup ~]# ll -d oldboy
drwxr-xr-x 2 root root 45  4月 15 13:42 oldboy
指定端口:–port
#ssh传输-远程访问模式
[root@backup ~]# rsync -avz -e "ssh -p 5555" root@10.0.0.7:/root/oldboy .
#rsync服务-守护进程模式
[root@backup ~]# rsync -avz --port=22 oldboy 10.0.0.7:/root/
2.rsync参数选项
-a          #归档模式传输,等于-tropgDl
-v          #详细模式输出,打印速率,文件数量等
-z          #传输时进行压缩以提高效率
-P          #显示传输速率
--exclude   #排除某些文件
--bwlimit=1m    #限制传输速率
--delete    #同步谁在前谁为准
案例1:–exclude排除某些文件
[root@backup ~]# rsync -avz oldboy --exclude=2.txt 10.0.0.7:/root/

Authorized users only. All activities may be monitored and reported.
root@10.0.0.7's password: 
sending incremental file list
oldboy/
oldboy/1.txt
oldboy/3.txt
oldboy/4.txt
案例2:–bwlimit=1m限速
#P 显示传输速率
[root@backup ~]# rsync -avzP --bwlimit=1m day028-集群架构-开篇.mp4 10.0.0.7:/root/

Authorized users only. All activities may be monitored and reported.
root@10.0.0.7's password: 
sending incremental file list
day028-集群架构-开篇.mp4
     36,799,899 100%    1.10MB/s    0:00:31 (xfr#1, to-chk=0/1)
案例3:–delete
#当前41-backup
[root@backup ~]# ll oldboy/
总用量 0
-rw-r--r-- 1 root root 0  4月 15 14:11 3.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 4.txt

#当前web01的文件
[root@web01 ~]# ll oldboy/
总用量 0
-rw-r--r-- 1 root root 0  4月 15 14:11 1.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 2.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 3.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 4.txt

#执行了--delete参数,结果就是web01以41服务器上文件为准
[root@backup ~]# rsync -avz --delete oldboy 10.0.0.7:/root/

#查看结果
41-backup
[root@backup ~]# ll oldboy/
总用量 0
-rw-r--r-- 1 root root 0  4月 15 14:11 3.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 4.txt

7-web01
[root@web01 ~]# ll oldboy/
总用量 0
-rw-r--r-- 1 root root 0  4月 15 14:11 3.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 4.txt
---------------------------------------------------
#以web01服务器为准使用--delete参数
环境:
#41-backup
[root@backup ~]# ll oldboy/
总用量 0
-rw-r--r-- 1 root root 0  4月 15 14:24 1.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 3.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 4.txt

#7-web01
[root@web01 ~]# ll oldboy/
总用量 0
-rw-r--r-- 1 root root 0  4月 15 14:11 3.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 4.txt

#在41上执行--delete参数
[root@backup ~]# rsync -avz --delete 10.0.0.7:/root/oldboy ./

结果:41-backup
[root@backup ~]# ll oldboy/
总用量 0
-rw-r--r-- 1 root root 0  4月 15 14:11 3.txt
-rw-r--r-- 1 root root 0  4月 15 14:11 4.txt

#企业中rsync快速恢复业务

day028-二阶段-rsync

远程访问模式总结:
rsync -avz 1.txt root@10.0.0.7:/root/   #push推送
rsync -avz root@10.0.0.7:/etc/hosts ./  #pull拉取
3.rsync守护进程模式
作用:增加安全性
第一步:安装rsync服务
第二步:配置rsync服务
第三步:根据配置文件创建出必要的数据信息
第四步:启动rsync服务
第五步:检查服务是否开启 端口873
最后:使用案例

参数1:在守护进程模式下rsync拷贝过程中 使用非交互的密码
--password-file=/etc/rs.pass

参数2:守护进程模式下内置密码变量RSYNC_PASSWORD
执行rsync远程拷贝的时候默认会读取RSYNC_PASSWORD变量中有没有密码,有直接调用,没有让我们交互输入密码
临时 export RSYNC_PASSWORD=123
第一步:安装rsync服务
[root@backup ~]# yum -y install rsync
第二步:配置rsync服务
#作用含义
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync                      # 运行进程的用户
gid = rsync                      # 运行进程的用户组
port = 873                       # 监听端口
fake super = yes                 # 无需让rsync以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 # 定义rsync服务用户连接认证密码文件路径

[backup]                # 定义模块信息
path = /backup          # 定义接收备份数据目录
--------------------------------------------------
#将没有注释的内容复制到配置文件中
[root@backup ~]# cat /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 = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
path = /backup

[test]          # 定义多个路径
path = /data
第三步:根据配置文件创建出必要的数据信息
#1.创建rsync虚拟用户
[root@backup ~]# useradd -M -s /sbin/nologin rsync
[root@backup ~]# id rsync 
用户id=1000(rsync) 组id=1000(rsync) 组=1000(rsync)

#2.配置密码文件,并授权为600
[root@backup ~]# echo rsync_backup:123 > /etc/rsync.passwd
[root@backup ~]# cat /etc/rsync.passwd 
rsync_backup:123

[root@backup ~]# chmod 600 /etc/rsync.passwd
[root@backup ~]# ll /etc/rsync.passwd
-rw------- 1 root root 17  4月 15 14:55 /etc/rsync.passwd

#3.创建目录 注意:大部分服务都是以启动进程的用户身份往磁盘中写数据
[root@backup ~]# mkdir /backup
[root@backup ~]# ll /backup/
总用量 0

[root@backup ~]# chown rsync.rsync /backup/
[root@backup ~]# ll -d /backup/
drwxr-xr-x 2 rsync rsync 6  4月 15 14:59 /backup/
第四步:启动rsync服务
[root@backup ~]# systemctl start rsyncd
第五步:检查服务是否开启 端口873
[root@backup ~]# netstat -tnulp|grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2898/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      2898/rsyn

day028-二阶段-rsync

案例1:客户端推送文件到服务器
1)客户端推送文件到服务端
[root@web01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup
Password: 
sending incremental file list
hosts

#查看
[root@backup ~]# ll /backup/
总用量 4
-rw-r--r-- 1 rsync rsync 158  6月 23  2020 hosts

2)拷贝etc目录到服务器
[root@web01 ~]# rsync -avz /etc rsync_backup@10.0.0.41::backup

#查看
[root@backup ~]# ll /backup/
总用量 16
drwxr-xr-x 123 rsync rsync 8192  4月 15 14:27 etc
-rw-r--r--   1 rsync rsync  158  6月 23  2020 hosts
案例2:客户端下载服务器上的文件
[root@web01 ~]# rsync -avz rsync_backup@10.0.0.41::backup/hosts .

#查看
[root@web01 ~]# ll hosts 
-rw-r--r-- 1 root root 158  6月 23  2020 hosts
案例3:使用非交互的密码
#参数1:在守护进程模式下rsync拷贝过程中 使用非交互的密码
--password-file=/etc/rs.pass
[root@web01 ~]# echo 123 > /etc/rs.pass
[root@web01 ~]# chmod 600 /etc/rs.pass 
[root@web01 ~]# rsync -avz /etc/passwd rsync_backup@10.0.0.41::backup --password-file=/etc/rs.pass

#参数2:守护进程模式下内置密码变量RSYNC_PASSWORD
执行rsync远程拷贝的时候默认会读取RSYNC_PASSWORD变量中有没有密码,有直接调用,没有让我们交互输入密码
[root@web01 ~]# export RSYNC_PASSWORD=123
[root@web01 ~]# rsync -avz /etc/passwd rsync_backup@10.0.0.41::backup
4.企业案例
案例1:客户端需求
1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2018-09-02
2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝
3.客户端最后将备份的数据进行推送至备份服务器
4.客户端每天凌晨1点定时执行该脚本
5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
----------------------------------------
1)创建脚本目录
[root@web01 ~]# mkdir -p /server/scripts
[root@web01 ~]# cd /server/scripts
2)写入脚本
    [root@web01 scripts]# cat backup.sh 
    #0.定义变量,指定目录格式
    dir=/backup/`hostname`_`hostname -I|awk '{print $1}'`_`date +%F-%H-%M`

    #1.创建目录
    mkdir -p $dir

    #2.打包文件
    cd /etc
    tar -zcf $dir/all.tar.gz hosts passwd

    #3.推送目录到41备份服务器
    export RSYNC_PASSWORD=123
    rsync -az $dir rsync_backup@172.16.1.41::backup

    #4.保留7天的文件
    find /backup -mtime +7|xargs rm -rf
    [root@web01 scripts]# ll
    总用量 4
    -rw-r--r-- 1 root root 371  4月 15 15:53 backup.sh
3)手动执行验证
[root@web01 scripts]# sh backup.sh
[root@backup ~]# tar -tf /backup/web01_10.0.0.7_2026-04-15-15-54/all.tar.gz 
hosts
passwd

4)写入定时任务
[root@web01 scripts]# vim /etc/crontab
00 01 * * * root sh /server/scripts/backup.sh
------------------------------------------------
#在克隆一台NFS,将脚本推送到nfs进行测试
[root@web01 scripts]# rsync -avz /server root@10.0.0.31:/
[root@nfs ~]# tree /server/
/server/
└── scripts
    └── backup.sh

1 directory, 1 file

测试验证:
[root@nfs scripts]# sh backup.sh #31-nfs执行脚本

[root@backup backup]# ll    #41-backup验证
总用量 0
drwxr-xr-x 2 rsync rsync 24  4月 15 16:07 nfs_10.0.0.31_2026-04-15-16-07
[root@backup backup]# ll nfs_10.0.0.31_2026-04-15-16-07/
总用量 4
-rw-r--r-- 1 rsync rsync 970  4月 15 16:07 all.tar.gz
[root@backup backup]# tar -tf nfs_10.0.0.31_2026-04-15-16-07/all.tar.gz 
hosts
passwd

day028-二阶段-rsync

案例2:服务端需求
服务端需求
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留6个月的备份数据,其余的全部删除
----------------------------------------
1)客户端增加md5值
[root@web01 scripts]# cat backup.sh
#0.定义变量,指定目录格式
dir=/backup/`hostname`_`hostname -I|awk '{print $1}'`_`date +%F-%H-%M`

#1.创建目录
mkdir -p $dir

#2.打包文件
cd /etc
tar -zcf $dir/all.tar.gz hosts passwd

#3.生成md5校验值
md5sum $dir/all.tar.gz >$dir/md5.log

#4.推送目录到41备份服务器
export RSYNC_PASSWORD=123
rsync -az $dir rsync_backup@172.16.1.41::backup

#5.保留7天的文件
find /backup -mtime +7|xargs rm -rf
------------------------------------------------
#准备邮箱配置:
1.安装服务:yum -y install mailx sendmail
2.准备163邮箱 生成授权码,登录163邮箱点设置->POP3-SMTP选项-->开启
3.配置邮箱:
[root@oldboy ~]# vim /etc/mail.rc
set from=alnwei0532@163.com
set smtp=smtp.163.com
set smtp-auth-user=alnwei0532@163.com
set smtp-auth-password=xxxxxx  #授权码
set smtp-auth=login
4.测试验证:mail -s "测试" 1632183467@qq.com </etc/hosts 

2)服务端收到后进行校验 将校验结果发到邮箱
[root@backup scripts]# cat backup.sh 
#1.校验
dir=/backup/*_*_`date +%F-%H-%M`

md5sum -c $dir/md5.log > /opt/test.txt

#2.将结果发送到邮箱 提前配置号邮箱

emil="1632183467@qq.com"
mail -s "备份结果" $emil </opt/test.txt

#3.保留180天数据
find /backup -mtime +180|xargs rm -rf
重点总结:
1.rsync远程拷贝模式
上传模式:rsync -avz 1.txt root@10.0.0.31:/root
下载模式:rsync -avz root@10.0.0.31:/etc/hosts ./
参数:
--exclude=1.txt #排除1.txt不推送
--bwlimit=1m    #限速1m
--delete        #相互同步 谁在前以谁为准

2.守护进程模式 重要
1)安装
yum -y install rsync
2)配置服务
vim /etc/rsyncd.conf
...
uid = rsync 定义启动rsync服务的虚拟用户
gid = rsync 组
...
auth users = rsync_backup
secrets file = /etc/rsync.passwd
...
[backup]
path = /backup

3)根据配置创建必要数据
创建虚拟用户rsync
echo rsync_backup:123 > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
创建目录、backup
mkdir /backup
chown rsync.rsync /backup

3.通用的备份脚本
正文完
 0
评论(没有评论)