第一章:Rsync备份

作者: chenkang | 来源:发表于2019-10-16 10:46 被阅读0次

第一节.备份基础知识

1.什么是备份?
备份就是把重要的文件在复制一份存放起来! (给源文件增加一个 副本)
2.为什么要做备份?
数据重要!
防止出现故障(软件故障 人为故障80% 被黑了), 保证快速恢复整个系统的运转.
3.能不能不做备份?
可以, 对于不重要的数据,可不用备份.
4.备份通常使用什么工具?
本地备份 cp
远程备份 scp rsync

第二节.什么rsync

rsync简称远程同步,可以实现不同主机之间的同步. 同时支持增量和全量的备份.
不同主机 windows->linux linux->linux macos-linux macos-windows

第三节.rsync如何实现的备份

全量: 完全备份, 效率低.
增量: 差异备份, 效率高.

第四节.rsync使用场景

rsync数据传输模式: push推 pull拉
推: 客户端将需要备份的文件发送到服务端
拉: 客户端从服务端下载需要的文件
rsync数据传输模式-->问题
推: 如果机器过多,容易造成推送数据缓慢
拉: 如果客户端过多,会造成服务端压力过大.

比如: 现在20台机器,怎么有效的缓解推送和拉取的问题:
多服务器使用场景
异地备份

第五节.rsync传输模式

本地传输  cp
远程传输  scp
守护进程  程序放在后台运行--->进程
            命令  选项       源文件   目标位置
   Local:  rsync [OPTION...] SRC...   [DEST]

1.本地传输案例:

    注意: 不支持推送和拉取,单纯的复制
   [root@nfs ~]# rsync -avz ./oldboy  /opt/

2.远程传输案例:

文件
上传   Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
[root@nfs ~]# rsync -avz test.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/test.txt ./
下载41服务器上的/opt/test.txt文件至本地当前目录,使用41的root用户完成此操作
  
目录
上传:             推送/etc/所有文件
[root@nfs ~]# rsync -avz /etc/ root@172.16.1.41:/opt
[root@nfs ~]# rsync -avz /etc root@172.16.1.41:/opt

题:
nfs推送的/etc 目录,到backup服务器上面,名字叫(etc-nfs-172.16.1.31-2019-5-21)
web推送的/etc 目录,到backup服务器上面,名字叫(etc-web-172.16.1.7)
[root@nfs ~]# rsync -avz /etc/ root@172.16.1.41:/opt/etc_$(hostname)_$(date +%F)

下载: 

远程同步弊端:
    1.需要使用系统的用户
        root,  权限太高
        oldboy,权限不足

3.守护进程模式案例:

    Access via rsync daemon:
 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

安装
    [root@backup ~]# yum install rsync -y
配置
    [root@backup ~]# rpm -qc rsync
    /etc/rsyncd.conf
    /etc/sysconfig/rsyncd
    [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
    
1.需要一个rsync进程运行时使用的普通用户--->rsync
useradd rsync -M -s /sbin/nologin

2.服务端需要定义一个客户端连接    虚拟用户名和密码
echo "rsync_backup:123456" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd

3.准备模块定义好的目录,客户端的数据都存放在该目录下
mkdir /backup
chown -R rsync.rsync /backup/

4.启动rsync,并加入开机自启
systemctl start rsyncd
systemctl enable rsyncd
systemctl status rsyncd

5.检查rsync的进程\端口
ps 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 ./test.txt rsync_backup@172.16.1.41::backup
将客户端的test.txt推送到41服务器的backup模块下,使用rsync_backup虚拟用户认证
下载数据:
rsync [OPTION...] [USER@]HOST::SRC... [DEST]

将41服务器的backup模块所有内容下载到本地的/opt目录
rsync -avz rsync_backup@172.16.1.41::backup /opt

将41服务器的backup模块指定内容下载到本地的/opt目录
rsync -avz rsync_backup@172.16.1.41::backup/test.txt /opt
扩展: 列出我的rsync服务总共有多少个模块,并且列出注释  list = true | false
[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::
backup          welcome to oldboyedu backup!

第六节.无差异同步

1.客户端---push---服务端. 以客户端为准.

    rsync -avz /root/ rsync_backup@172.16.1.41::backup          #正常手法
    rsync -avz --delte /root/ rsync_backup@172.16.1.41::backup  #非正常手法

2.客户端---pull---服务端. 以服务端为准.

rsync -avz rsync_backup@172.16.1.41::backup ./              #正常手法
rsync -avz --delete rsync_backup@172.16.1.41::backup ./     #非正常手法

第七节.rsync其他参数使用

1.对同步进行限速100MB * 8 = 800兆 --bwlimit MB * 8 = 实际带宽100

dd if=/dev/zero of=./size.disk bs=1M count=500
[root@nfs ~]# rsync -avzP --bwlimit 1 ./size.disk rsync_backup@172.16.1.41::backup
Password: 
sending incremental file list
size.disk
177,537,024  33%    1.01MB/s    0:05:36  

2.排除不同的文件

--exclude=file
rsync -avz /root/ --exclude=size.disk  rsync_backup@172.16.1.41::backup
    
--exclude-from file
touch file{1..10}

# cat ex.txt 
file4
file5
file6
rsync -avz /root/ --exclude-from ex.txt rsync_backup@172.16.1.41::backup

3.客户端输入密码验证:

方式一: --password-file        准备一个客户端的密码文件 /etc/rsync.pass
echo "123456" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
rsync -avz /root/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.pass

方拾二:
export RSYNC_PASSWORD=123456
rsync -avz /root/ rsync_backup@172.16.1.41::backup

第八节.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

第九节.rsync错误

[root@nfs ~]# rsync -avz ./test.txt 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]

1.密码真的错误
2.服务端的权限错误--->600权限

[root@nfs ~]# rsync -avz ./test.txt rsync_backup@172.16.1.41::backup
Password: 
sending incremental file list
test.txt
rsync: mkstemp ".test.txt.WSY34H" (in backup) failed: Permission denied (13)

sent 120 bytes  received 124 bytes  69.71 bytes/sec
total size is 29  speedup is 0.12
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

第十节.企业实战案例

已知3台服务器主机名分别为web01、backup 、nfs主机信息见下表:

角色 主机名 外网IP(NAT) 内网IP(LAN)
客户端 web01 eth0:10.0.0.7 eth1:172.16.1.7
客户端 nfs01 eth0:10.0.0.31 eth1:172.16.1.31
服务端 backup eth0:10.0.0.41 eth1:172.16.1.41

客户端需求
1.客户端将本地需要备份的文件打包并拷贝至/backup/nfs_172.16.1.31_2018-09-02
2.客户端将备份后的数据推送至备份服务器
3.客户端本地保留最近7天的数据, 避免浪费磁盘空间
4.客户端每天凌晨1点定时执行该脚本

服务端需求
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留6个月的备份数据,其余的全部删除

注意:所有服务器的备份目录必须都为/backup

-------------------------------客户端--------------------------------------
散货-->打包-->装车--->运输

1.备份什么?
    /etc/hosts /etc/fstab /var/spool/cron .....
    tar czf /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2 {print $2}')_$(date +%F)/sys.tar.gz /etc/hosts /etc/fstab /var/spool/cron
2.备份到哪?
    /backup/nfs_172.16.1.31_2018-09-02
    mkdir /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2 {print $2}')_$(date +%F)
    
3.推送数据?
    nfs_172.16.1.31_2018-09-02   ----> 172.16.1.41 backup服务器

    export RSYNC_PASSWORD=123456
    rsync -avz /backup/nfs_172.16.1.31_2019-05-10 rsync_backup@172.16.1.41::backup

-------------------------------客户端脚本--------------------------------------  
#模拟30天的文件
for i in {1..30};do date -s "2019/05/$i";sh /server/scripts/client_push_data.sh ;done

[root@nfs ~]# cat /server/scripts/client_push_data.sh 
Path=/backup
Host=$(hostname)
Addr=$(ifconfig eth1|awk 'NR==2 {print $2}')
Date=$(date +%F)
Dest=$Path/${Host}_${Addr}_${Date}

#1.创建一个本地存储的目录
mkdir -p $Dest

#2.将需要备份的文件打包到$Dest目录中
cd / && \
[ -f $Dest/sys.tar.gz ] ||  tar czf $Dest/sys.tar.gz etc/hosts etc/fstab var/spool/cron

#3.将备份的文件夹推送到backup服务器
export RSYNC_PASSWORD=123456
rsync -avz $Dest rsync_backup@172.16.1.41::backup

#4.保留最近7天的数据
find /backup/ -type d -mtime +7|xargs rm -rf
-------------------------------服务端端脚本------------------------------------
服务端定时任务:
*/2 * * * * sh /server/scripts/check_client_data.sh &>/dev/null
脚本:
[root@backup backup]# cat /server/scripts/check_client_data.sh 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Path=/backup
Date=$(date +%F)
#1.校验每天客户端推送过来的数据
md5sum -c $Path/*_$Date/flag_$Date > $Path/result_$Date

#2.将校验的结果通知给管理人员
mail -s "Rsync Backup $Date" "572891887@qq.com" < $Path/result_$Date

#3.保留最近180天的数据
find /backup/ -type d -mtime +180|xargs rm -rf

相关文章

  • rsync安装部署

    第一章 Rsync 基本概述 第二章 Rsync应用场景 2.1 备份方式: 既然需要备份,那么我们应该了解备份的...

  • Rsync

    第一章 Rsync 基本概述 rsync 是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备...

  • 02期中架构-rsync

    第一章 Rsync 基本概述 rsync 是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备...

  • 文件同步rsync

    rsync 远程同步rsync(remote sync) 备份 rsync 优点: 支持增量备份选择性保持:符号链...

  • CentOS7 Rsync服务搭建-Rsync+Inotify架

    一.rsync 概念 1.rsync rsync是类unix/linux系统下的数据镜像备份工具。使用快速增量备份...

  • day 31综合架构备份服务章节

    课程介绍 rsync守护进程模式备份数据原理 错误说明: rsync命令参数说明 rsync守护进程备份服务企业应...

  • rsync使用

    rsync==远程备份== Rsync 与 scp的比较:scp 无法备份大量数据,类似Windows的复制 本地...

  • Linux中如何实现数据之间的同步?来看看这个基础入门篇,Rsy

    RSYNC 概述 Rsync 是 Linux 系统下的数据镜像备份工具,使用快速增量备份工具 Remote Syn...

  • 2019-08-13

    day31 综合架构备份服务章节 课程介绍 1. rsync备份服务传输数据原理2. rsync备份服务命令参数说...

  • linux之rsync+inotify实现服务器之间文件的同步

    1、rsync 与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsy...

网友评论

    本文标题:第一章:Rsync备份

    本文链接:https://www.haomeiwen.com/subject/teuymctx.html