1.备份的基础概念知识
1.什么是备份?
备份就是把自己认为重要的文件复制一份存放起来 (给源文件增加一个 副本)
2.为什么要备份?
数据比较重要
防止出现故障(软件故障 认为故障占比80%) 能保证快速恢复整个系统的运转
3.能不能不备份?
可以 对于自己绝对不重要的文件 可以不备份
4.备份通常使用什么工具?
本地备份 cp
远程备份 scp rsync
2.什么是rsync
rsync简称远程同步 可以实现不同主机之间的同步 同时支持增量和全量的备份
不同主机 windows-->linux linux-->linux macos-->linux macos-->windows
3.rsync是如何实现的备份
全量:完全备份 效率低
增量:差异备份 效率高
4.rsync使用场景
rsync数据传输模式:push推 lull拉
推(上传):客户端将需要备份的文件发送到服务器
拉(下载):客户端从服务端下载需要的文件
rsync数据传输模式-->问题
推(下载):如果机器过多 容易造成推送数据缓慢
拉(下载):如果客户端过多 会造成服务端压力过大
比如:现在有20台计算机 怎么有效的缓解推送和拉取问题
多服务器使用场景
异地备份
5.rsync传输模式
三种传输模式:
1.本地传输 cp
2.远程传输 scp
3.守护进程 进程放在后台运行--->进程
Local: rsync [OPTION...] SRC... [DEST]
命令 选项 源文件 目标位置
PS:不支持推送和拉取 单纯的复制 cp命令本地备份是覆盖形式而 rsync是差异形式
Access via remote shell: (基于ssh协议)
文件
上传 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
[root@nfs ~]# tsync -avz ./lisong.txt root@172.16.1.41:/opt/
推送本地文件至172.16.1.41服务器的/opt目录下 使用41的root用户完成此操作
下载 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
[root@nfs ~]# rsync -avz root@172.16.1.41:/opt/lisong.txt ./
下载172.16.1.41服务器opt目录下的lisong.txt文件至本地当前目录使用root用户完成此操作
目录
上传
1.[root@nfs ~]# rsync -avz /etc/ root@172.16.1.41:/opt
推送etc下面的所有文件到172.16.1.41服务器的opt目录下
2.[root@nfs ~]# rsync -avz /etc root@172.16.1.41:/opt
推送etc整个目录到172.16.1.41服务器的opt目录下
例:nfs推送/etc目录到backup服务器上面名字叫(etc-nfs-172.16.1.31-今天时间)
rsync -avz /etc root@172.16.1.99:/root/etc-nfs-172.16.1.31-$(date +%F)
web推送/etc目录到backup服务器上面名字叫(etc-web-172.16.1.7)
rsync -avz /etc root@172.16.1.99:/root/etc-web-172.16.1.7
下载:远程同步弊端
1.需要使用系统的用户
root 权限太高
普通用户 权限不足
6.守护进程 将程序运行在后台
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
安装
yum install -y rsync
配置
查询配置文件:rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
编写配置文件:vim /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
解释:
配置详解
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服务用户连接认证密码文件路径
comment = commit # 模块注释信息
path = /backup # 定义接收备份数据目录
1.需要创建一个rsync进程运行时使用的普通用户---->rsync
useradd rsync -M -s /sbin/nologin
-M 不创建家目录
-s 指定用户的登录方式
2.服务端需要定义一个客户端链接时的虚拟用户和密码
echo "rsync_backup:123456" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
此文件必须是600权限
3.准备模块定义好的目录 客户端的数据都存放在该目录下
mkdir /backup
chomn -R rsync.rsync /backup/
4.启动rsync并加入开机自启
systemctl start rsyncd
systemctl enable rsyncd
systemctl status rsync
5.检查rsync的进程\端口
pa aux | grep rsync
netstat -lntp | grep 873
6.客户端测试
backup属于服务端--->百度网盘
nfs属于客户端--->PC电脑
推送数据:
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST #远程连接方式:路径
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST #守护进程方式::模块名称rsync -
avz lisong.txt rsync_backup@172.16.1.99::backup
将客户端的lisong.txt推送到99服务器的backup模块下 使用rsync_backup虚拟用户认证
下载数据:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync -avz rsync_backup@172.16.1.99::backup/lisong.txt ./
将服务端的backup模块下的lisong.txt文件下载到本地的当前目录下使用虚拟用户认证
rsync -avz rsync_backup@172.16.1.99::backup ./
将服务器的backup模块下的所有文件下载到本地的当前目录使用虚拟用户认证
1.无差异同步
客户端---->push--->服务端 以客户端为准
rsync -avz /root/ rsync_backup@172.16.1.99::backup
上传root目录下的所有文件到99服务器的backup模块下
rsync -avz /root/ --delete rsync_backup172.16.1.99::backup
上传root目录下的所有文件到99服务器的backup模块下并保持服务器的文件与客户端一致
客户端--->pull--->服务端 以服务端为准
rsync -avz rsync_backup@172.16.1.41::backup ./
下载99服务器上面backup模块下的所有文件到当前目录下
rsync -avz --delete rsync_backup@172.16.1.41::backup ./
下载99服务器上面backup模块下的所有文件到当前目录下并保持文件与服务端一致
2.对同步进行限速100MB * = 800兆 --dwlimit MB * 8 = 实际带宽100MB
模拟环境创建一个大小500M的文件
dd if=/dev/zero of=./size.disk bs=1M count=500
测试
rsync -avzP --bwlimit 1 ./size.disk rsync_backup@172.16.1.99::backup
-P 显示传输速度
传输指定文件到99服务器的backup模块下限制传输速度为1MB
3.排除不同的文件
使用命令:--exclude= #指定某个文件
--exclude-from #指定某个文件里面要排除的文件
rsync -avz /root/ --exclude=size.disk rsync_backup@172.16.1.99::backup
上传root目录下的所有文件到99服务器的backup模块下并排除size.bisk文件
rsync -avz /root/ --exclude-from peichu.txt rsync_backup@172.16.1.99::backup
上传root目录下的所有文件到99服务器的backup模块下并排除peichu.txt文件里面写的文件名
4.客户端免密传输
方式一:--password-file
模拟环境创建:
echo "123456" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
测试:
rsync -avz /root/ rsync_backup@172.16.1.99::backup --password-file=/etc/rsync.pass
传输root目录下的所有文件到99服务器的backup模块下 指定密码文件位置实现免密传输
方式二:export RSYNC_PASSWORD="密码" 只在本中断生效"临时生效"
rsync -avz /root/ rsync_backup@172.16.1.99::backup
传输root目录下的所有文件到99服务器的root目录下通过上面指定的密码实现临时免密传输
7.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 #让目标目录和源目录数据保持一致