学习b记 · 第二阶段
第一阶段的后面还有两块,一个网络基础和一个抓包,需要在润色一下再发,第一阶段已经学完了,但是笔记还有很多东西没弄好后面有空再修改吧,这是第二阶段的第一章rsync备份服务,以后每天晚上都会传一次
一、rsync备份服务
rsync是一款开源、快速、多功能、可实现全量及增量的本地或远程数据同步备份的优秀工具。rsync软件适用于Unix/linux/Windows等多种操作系统平台。
rsync官方地址:TP
rsync监听端口:873
rsync运行模式:C/S*
1、备份类型介绍
1)完全备份
将客户端所有的数据内容file1 file2 file3全部备份至服务端 (效率低下, 占用空间)
2)增量备份
将客户端的file2 file3增量备份至服务端 (提高备份效率,节省空间, 适合异地备份 )
2、Rsync使用三种主要的数据传输方式
1)本地方式
单个主机本地之间的数据传输(此时类似于cp命令)
#本地拷贝数据命令
Local: rsync [OPTION...] SRC... [DEST]
#本地拷贝数据示例
[root@backup ~]# rsync -avz /etc/passwd /tmp/
rsync #备份命令(cp)
[options] #选项
SRC... #本地源文件
[DEST] #本地目标文件
2)远程方式
通过ssh通道传输数据,类似scp命令
#pull拉取数据命令
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
#pull拉取数据示例
[root@backup ~]# rsync -avz root@172.16.1.41:/etc/hostname ./#拉取远程文件
[root@backup ~]# rsync -avz root@172.16.1.41:/root/ /backup/ #拉取远程目录下的所有文件
[root@backup ~]# rsync -avz root@172.16.1.41:/root /backup/#拉取远程目录以及目录下的所有文件
Pull #拉取, 下载
rsync #备份命令
[options] #选项
[USER@] #目标主机的系统用户
HOST #目主机IP地址或域名
SRC... #目标主机源文件
[DEST] #下载至本地哪个位置
#push推送数据命令
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
#push推送数据示例
rsync -avz /backup/2018-10-01 root@172.16.1.41:/tmp/
Push #推送, 上传
rsync #备份命令
[options] #选项
SRC... #本地源文件
[USER@] #目标主机的系统用户
HOST #目主机IP地址或域名
[DEST] #目标对应位置
3)守护进程
rsync自身非常重要的功能(不使用系统用户,更加安全)
#pull拉取数据命令
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
#1.拉取rsync备份服务的"backup模块"数据至本地/mnt目录
[root@nfs01 ~]# rsync -avz rsync_backup@192.172.16.1.41::backup/ /mnt/ --password-file=/etc/rsync.password
rsync #命令
[OPTION...] #选项
[USER@] #远程主机用户(虚拟用户)
HOST:: #远程主机地址
SRC... #远程主机模块(不是目录)
[DEST] #将远程主机数据备份至本地什么位置
#push推送数据命令
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
#2.将本地/mnt目录推送至rsync备份服务器的backup模块
[root@nfs01 ~]# rsync -avz /mnt/ rsync_backup@192.172.16.1.41::backup/ --password-file=/etc/rsync.password
rsync #命令
[OPTION...] #选项
SRC... #远程主机模块(不是目录)
[USER@] #远程主机用户(虚拟用户)
HOST:: #远程主机地址
[DEST] #将远程主机模块备份至本地什么位置
3、Rsync命令对应选项
-a #归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输
--partial #断点续传
--delete #让目标目录和源目录数据保持一致
--password-file=xxx #使用密码文件
4、Rsync服务实践
服务器配置
1)[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]
comment = welcome to oldboyedu backup!
path = /backup
2) 创建rsync账户,不允许登录不创建家目录
[root@backup ~]# useradd -M -s /sbin/nologin rsync
3) 创建备份目录(尽可能磁盘空间足够大),授权rsync用户为属主
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup/
4)创建虚拟用户密码文件, 授权600安全权限(用于客户端连接时使用的用户)
[root@backup ~]# echo "rsync_backup:zls" >/etc/rsync.passwd
[root@backup ~]# chmod 600 /etc/rsync.passwd
5)启动rsync服务,并将rsync加入开机自启动
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
6)检查端口
[root@backup ~]# netstat -lntup
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 4758/rsync
客户端配置
7)Rsync客户端仅需配置虚拟用户的密码,并授权为600安全权限
# 方式一:适合终端执行指定用户密码文件
[root@nfs01 ~]# yum install rsync -y
[root@nfs01 ~]# echo "zls" > /etc/rsync.pass
[root@nfs01 ~]# chmod 600 /etc/rsync.pass
# 方式二:脚本中使用,强烈推荐方式
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
8)实战一
客户端推送backup目录下所有内容至Rsync服务端
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
[root@nfs01 ~]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/
9)实战二
客户端拉取Rsync服务端 backup模块数据至本地客户端的 /backup目录
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
[root@nfs01 ~]#rsync -avz rsync_backup@172.16.1.41::backup /backup/
10)实战三
Rsync实现数据无差异同步
#拉取远端数据:远端与本地保持一致,远端没有本地有会被删除, 造成客户端数据丢失
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
[root@nfs01 ~]# rsync -avz --delete rsync_backup@172.16.1.41::backup/ /data/
#推送数据至远端:本地与远端保持一致, 本地没有远端会被删除, 造成服务器端数据丢失
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
[root@nfs01 ~]# rsync -avz --delete /data/ rsync_backup@172.16.1.41::backup/
11)实战四
Rsync的Limit限速
#企业案例: 某DBA使用rsync拉取备份数据时,由于文件过大导致内部交换机带宽被沾满,导致用户的请求无法响应
[root@nfs01 ~]# export RSYNC_PASSWORD=zls
[root@nfs01 ~]# rsync -avz --bwlimit=1 rsync_backup@172.16.1.41::backup/ /data/