文章目录
- 01.知识概述部分
- 02.知识回顾说明
- 03.备份服务概述介绍
- scp命令用法:https://man.linuxde.net/scp
- 备份作用说明:
- 04.备份服务原理概念:
- 1)增量备份数据原理
- 05.备份服务搭建过程
- rsync命令:https://man.linuxde.net/rsync
- 服务端配置过程:
- 第一个里程:确认软件是否安装
- 第二个里程:编写配置文件
- 第三个里程:创建备份目录管理用户
- 第四个里程:创建一个备份数据目录
- 第五个里程:创建一个访问认证文件
- 第六个里程:启动备份服务程序
- 补充说明:
- 客户端配置使用过程:
- rsync软件命令使用方法:
- 1)本地备份数据工作方式(类似cp命令功能)
- 2)远程备份数据工作方式(类似于scp命令功能)
- PS:rsync在推送目录数据时,目录后面有 / 和没有/斜线有本质区别
- 3)守护进程备份数据方式(服务端/客户端)daemon(实时备份)
- 知识总结梳理
- 备份服务学生问题:
01.知识概述部分
1)综合架构备份服务概述
2)备份服务使用原理 rsync
3)备份服务搭建过程
4)备份服务配置过程
5)备份服务命令参数
6)备份服务企业应用
02.知识回顾说明
架构组成部分:
01)防火墙服务器 实现数据包过滤
02)负载均衡设备 实现后端服务压力分担/数据流量调度作用
03)web网站服务器 实现用户可以浏览网站页面
04)数据库服务器 存储字符串信息
05)存储服务器 存储图片 视频 音频 附件等信息
06)备份服务器 数据备份/数据分析处理
07)缓存服务器 加快数据读取或者写入速度
08)监控服务器 实现监控网站架构中服务器状态
09)批量管理服务器 实现更多台主机批量高效管理
10)跳板机服务器 实现管理人员权限控制,记录操作人员行为
11)VPN服务器 实现终端访问另外一个终端时尽量是一个虚拟专用网络
12)数据分析服务器 可以进行有效数据分析,便于公司制定发展路线
03.备份服务概述介绍
Rsync是一款开源的、快速的、多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具
全量:将目录中所有数据都进行传输备份(可以包含已经备份过的数据)
增量:将目录中新增的数据进行传输备份(可以不用包含已经备份的数据,提高数据传输效率)
本地:相当于cp备份数据,将数据从一个目录备份到另一个目录(在一台主机上进行),但是本地备份不方便统计数据。
远程:相当于scp备份数据
scp命令用法:https://man.linuxde.net/scp
上传本地文件到远程机器指定目录:
scp -rp /oldboy/ 10.0.0.41:/ r备份目录,p保持属性不变 后面跟上IP与要保存的路径
将本地oldboy目录的2233.txt拷贝到10.0.0.41主机中的/tmp目录下
[root@db01 ~]# scp -rp /oldboy/2233.txt 10.0.0.41:/tmp
The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.
ECDSA key fingerprint is SHA256:zDeAjIfgReE5Qma2PXTO4Uria24uAloqWcyU6PtExSg.
ECDSA key fingerprint is MD5:b7:96:0f:c9:0f:03:d3:bb:27:9a:c4:5a:0b:45:dc:30.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.41' (ECDSA) to the list of known hosts.
root@10.0.0.41's password:
2233.txt 100% 0 0.0KB/s 00:00
从远处复制文件到本地目录:
从10.0.0.41机器上的/tmp目录中下载mashiming.txt文件到本地 /tmp目录中
[root@db01 ~]# scp root@10.0.0.41:/tmp/mashiming.txt /tmp
root@10.0.0.41's password:
mashiming.txt 100% 0 0.0KB/s 00:00
[root@db01 ~]# ll /tmp
总用量 0
-rw-r--r-- 1 root root 0 1月 8 17:25 2233.txt
-rw-r--r-- 1 root root 0 1月 9 01:46 mashiming.txt
scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
-1:使用ssh协议版本1;
-2:使用ssh协议版本2;
-4:使用ipv4;
-6:使用ipv6;
-B:以批处理模式运行;
-C:使用压缩;
-F:指定ssh配置文件;
-l :指定宽带限制;
-o:指定使用的ssh选项;
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r :以递归方式复制。
备份作用说明:
1)避免数据丢失或者损坏
2)将数据进行汇总管理(数据分析) (可以把日志备份到备份服务器,以后搜索日志就方便了)
04.备份服务原理概念:
1)增量备份数据原理
利用算法实现增量备份
1.根据hash算法(checksum)识别出增量的数据,将增量数据进行传递
示例md5sum算法:
md5sum:已知一个文件,生成一个数值,两个文件对比数字一样,说明文件内容都一样
2.根据文件属性信息变化(修改时间/大小),进行数据传递
2)rsync守护进程方式备份数据原理
1.需要完成用户身份验证
2.需要将用户身份进行转换 rsync
3.需要将备份数据属主和属组进行修改
05.备份服务搭建过程
rsync命令:https://man.linuxde.net/rsync
rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,
rsync [OPTION]… SRC DEST
rsync [OPTION]… SRC [USER@]host:DEST
rsync [OPTION]… [USER@]HOST:SRC(模块信息) DEST
rsync [OPTION]… [USER@]HOST::SRC(模块信息) DEST
rsync [OPTION]… SRC [USER@]HOST::DEST
rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC(模块信息) [DEST]
对应于以上六种命令格式,rsync有六种不同的工作模式:
拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":“分隔符时就启动这种工作模式。如:rsync -a /data /backup
使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:“分隔符时启动该模式。如:rsync -avz *.c foo:src
使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:“分隔符时启动该模式。如:rsync -avz foo:src/bar /data
从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::“分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack
从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::"分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www
列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www
选项
-v, --verbose 详细模式输出。
-q, --quiet 精简输出模式。
-c, --checksum 打开校验开关,强制对文件传输进行校验。
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
-r, --recursive 对子目录以递归模式处理。
-R, --relative 使用相对路径信息。
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。
–backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀。
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。
-l, --links 保留软链结。
-L, --copy-links 想对待常规文件一样处理软链结。
–copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结。
–safe-links 忽略指向SRC路径目录树以外的链结。
-H, --hard-links 保留硬链结。
-p, --perms 保持文件权限。
-o, --owner 保持文件属主信息。
-g, --group 保持文件属组信息。
-D, --devices 保持设备文件信息。
-t, --times 保持文件时间信息。
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。
-n, --dry-run现实哪些文件将被传输。
-w, --whole-file 拷贝文件,不进行增量检测。
-x, --one-file-system 不要跨越文件系统边界。
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。
-e, --rsh=command 指定使用rsh、ssh方式进行数据同步。
–rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件。
–existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件。
–delete 删除那些DST中SRC没有的文件。
–delete-excluded 同样删除接收端那些被该选项指定排除的文件。
–delete-after 传输结束以后再删除。
–ignore-errors 及时出现IO错误也进行删除。
–max-delete=NUM 最多删除NUM个文件。
–partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输。
–force 强制删除目录,即使不为空。
–numeric-ids 不将数字的用户和组id匹配为用户名和组名。
–timeout=time ip超时时间,单位为秒。
-I, --ignore-times 不跳过那些有同样的时间和长度的文件。
–size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。
–modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。
-T --temp-dir=DIR 在DIR中创建临时文件。
–compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份。
-P 等同于 --partial。
–progress 显示备份过程。
-z, --compress 对备份的文件在传输时进行压缩处理。
–exclude=PATTERN 指定排除不需要传输的文件模式。
–include=PATTERN 指定不排除而需要传输的文件模式。
–exclude-from=FILE 排除FILE中指定模式的文件。
–include-from=FILE 不排除FILE指定模式匹配的文件。
–version 打印版本信息。
–address 绑定到特定的地址。
–config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件。
–port=PORT 指定其他的rsync服务端口。
–blocking-io 对远程shell使用阻塞IO。
-stats 给出某些文件的传输状态。
–progress 在传输时现实传输过程。
–log-format=formAT 指定日志文件格式。
–password-file=FILE 从FILE中得到密码。
–bwlimit=KBPS 限制I/O带宽,KBytes per second。
-h, --help 显示帮助信息。
服务端配置过程:
第一个里程:确认软件是否安装
yum install -y rsync
第二个里程:编写配置文件
配置了该文件的服务器才可以被其他服务器拉取/推送数据!客户端启动了rsyncd服务即可以直接对配好文件的服务器进行拉取/推送数据。反之就是没有配置文件只启动服务的设备是无法被其他服务器拉取/推送数据的。
编写任何配置文件前先备份!
cp /etc/rsyncd.conf{,.bak}vi /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start##uid = rsync
gid = rsync
port = 873
#fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup/etc/rsyncd.conf内容翻译:
uid = rsync ----指定转换用户身份/备份目录管理用户
gid = rsync ----指定转换用户组身份/备份目录管理用户组
port = 873 ----指定服务端口信息
#fake super = yes ----是否伪装成一个超级用户(rsync)配置后保证文件权限信息不变/不再提示chgrp命令错误提示
use chroot = no ----实现远程传输安全配置
max connections = 200 ----最大连接数
timeout = 300 ----连接超时时间
pid file = /var/run/rsyncd.pid ----(pid进程号)记录服务进程号码只有服务启动才会有进程文件lock file = /var/run/rsync.lock ----控制最大连接数量(锁文件)
log file = /var/log/rsyncd.log ----rsync备份服务日志文件(查看异常原因)
ignore errors ----忽略错误功能 保证传输数据效率
read only = false ----针对于备份目录是否是只读
list = false ----不能列表???
该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出
如果设置该选项为false,可以创建隐藏的模块
默认值是true
hosts allow = 172.16.1.0/24 ----允许哪个主机地址或者网段可以和备份服务器建立连接(白名单)
hosts deny = 0.0.0.0/32 ----拒绝哪个主机地址或者网段可以和备份服务器建立连接(黑名单)
auth users = rsync_backup ----指定认证用户
secrets file = /etc/rsync.password ----指定认证密码文件
[backup] ----模块名称
comment = "backup dir by oldboy" ----模块注释说明
path = /backup ----指定备份目录路径
第三个里程:创建备份目录管理用户
创建一个虚拟用户
useradd rsync -M -s /sbin/nologin (有需要可以指定uid -u xxx)
# id rsync
uid=1042(rsync) gid=1046(rsync) groups=1046(rsync)
第四个里程:创建一个备份数据目录
修改该目录属主属组为后rsync,客户端传输时源文件属主属组本来是root或者是其他用户,在传输到服务端时,服务端就会以上面创建的虚拟用户rsync身份来管理,传输过来的文件属主属组信息也会变为与目录一样的rsync属主属组,这也是保证了数据的安全性。
[root@backup ~]# mkdir /backup
chown rsync.rsync /backup
第五个里程:创建一个访问认证文件
vim /etc/rsync.password
rsync_backup:oldboy123
改文件权限:
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password
-rw------- 1 root root 25 1月 8 10:34 /etc/rsync.password
第六个里程:启动备份服务程序
systemctl start rsyncd[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemonLoaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; vendor preset: disabled)Active: active (running) since 三 2020-01-08 10:38:37 CST; 6s ago[root@backup ~]# netstat -lntup|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 7486/rsync
tcp6 0 0 :::873 :::* LISTEN 7486/rsync
======================================
补充说明:
rsync软件常用三种工作模式
1)本地备份数据工作方式(类似cp命令功能)
2)远程备份数据工作方式(类似于scp命令功能)
3)守护进程备份数据方式(服务端/客户端)daemon
客户端配置使用过程:
rsync软件命令使用方法:
1)本地备份数据工作方式(类似cp命令功能)
cp -r 备份数据信息 保存数据目录路径
rsync 参数 /oldboy/oldboy.txt /tmp
2)远程备份数据工作方式(类似于scp命令功能)
拉取数据:客户端将数据进行下载 <-- 备份服务器 (还原)
rsync 参数 远程主机地址或者名称:拉取的数据信息 本地保存数据的目录信息
rsync 172.16.1.41:/oldgirl/oldgirl01.txt /tmp
推送数据:客户端将数据进行上传 --> 备份服务器 (备份)
rsync 参数 本地需要备份推送数据 远程主机地址或者名称:/备份数据路径信息
rsync -avz /oldboy/oldboy.txt backup:/tmp
(在/etc/hosts文件添加域名与IP才能实现本地解析)
PS:rsync在推送目录数据时,目录后面有 / 和没有/斜线有本质区别
有/斜线的时候将目录下面的数据内容进行推送传输
没有/斜线的时候将目录本身以及下面数据内容都进行推送传输
3)守护进程备份数据方式(服务端/客户端)daemon(实时备份)
拉取数据(还原):Pull: rsync [OPTION…] [USER@]HOST::SRC… [DEST]
rsync 参数 远程认证用户信息@服务端主机名称或地址::模块信息 本地保存数据路径
(模块信息是在rsync配置文件/etc/rsyncd.conf里带中括号的信息,可以自行修改)
rsync -avz rsync_backup@172.16.1.41::backup /tmp
(暂未解决未知名原因有的设备会报错,在还原时模块信息后面加指定路径)
rsync -avz rsync_backup@172.16.1.41::backup/tmp/etc/host /tmp
推送数据(备份):Push: rsync [OPTION…] SRC… [USER@]HOST::DEST
rsync 参数 本地需要推送的数据 认证用户名称@服务端主机名或地址::模块信息
rsync -avz /oldboy rsync_backup@172.16.1.41::backup
知识总结梳理
1)备份服务概述介绍 rsync软件 (全量和增量备份 本地或远程备份)
2)备份服务工作原理
a 增量备份数据原理
b 守护进程传输数据原理
3)备份服务搭建过程
服务端搭建过程: 安装软件 —> 编写配置文件 —> 创建虚拟用户 —> 创建密码文件 —> 创建备份目录 —> 启动服务
服务工作模式: 本地备份 远程备份 守护进程备份(服务端客户端)
命令语法结构
4)服务配置文件
遇到的问题总结:
[root@nfs01 oldgirl]# rsync -avz /oldgirl rsync_backup@172.16.1.41::backup
Password:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
[root@nfs01 oldgirl]# rsync -avz /oldgirl rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
rsync: chgrp "oldgirl" (in backup) failed: Operation not permitted (1)
oldgirl/
oldgirl/321.txt
rsync: chgrp "oldgirl/.321.txt.cBvoYX" (in backup) failed: Operation not permitted (1)
会有报错,没有修改属性
修改配置文件去掉注释伪装超级用户解决该报错问题,但是会导致源文件属主属组信息不变
#fake super = yes ----是否伪装成一个超级用户(rsync)
配置后保证文件权限信息不变/不再提示chgrp命令错误提示
rsync -r /oldboy rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passworf
rsync -avz
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
-v, --verbose 详细模式输出。
-z, --compress 对备份的文件在传输时进行压缩处理。
--password-file=FILE 从FILE中得到密码
备份服务学生问题:
-
王昊: 远程方式rsync 原理 借助SSH协议
[root@backup 19:14:39 ~]# rsync 172.16.1.31:/oldboy/oldgirl.txt /tmp
ssh: connect to host 172.16.1.31 port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.2]
学生环境 和 讲师环境不一致 -
王志强:
[root@color~11:14:33]#rsync -r ~/01 10.0.0.41 /tmp
rsync: link_stat “/root/10.0.0.41” failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
语法结构错误[root@color~11:18:13]# rsync -r /01 rsync_backup@172.16.1.41::backup
Password:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2] -
王鑫泽
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
认证用户名 或 密码出现问题 -
于自忠
rsync 172.16.1.31:/oldboy/oldgirl.txt /tmp
The authenticity of host ‘172.16.1.31 (172.16.1.31)’ can’t be established.
ECDSA key fingerprint is SHA256:u9ckyJIp65sERvUFvyXl2ukmdzNLYIS3ARiEh+AKrJE.
ECDSA key fingerprint is MD5:93:02:47:a2:14:b9:f1:41:e5:ec:4c:28:68:bc:56:54.
Are you sure you want to continue connecting (yes/no)? y
Please type ‘yes’ or ‘no’: yes
Warning: Permanently added ‘172.16.1.31’ (ECDSA) to the list of known hosts.
root@172.16.1.31’s password:
Permission denied, please try again.
root@172.16.1.31’s password:
rsync: change_dir “/oldboy” failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1650) [Receiver=3.1.2]
rsync: [Receiver] write error: Broken pipe (32)
确认拉取或推送的数据是否存在 -
孙豪序
root@sunhaoxu001 ~ 11:42:43]# rsync -avz rsync_backup@172.16.1.41::backup /backup/
@ERROR: Unknown module ‘backup’
rsync error: error starting client-server protocol (code 5) at main.c(1648) [Receiver=3.1.2]
在编辑linux系统文件时, 如果使用了复制信息方法,需要从记事本中复制,不要从一些文档软件中复制