02备份服务

备份服务

1. 作用

  • 数据备份的服务器
  • 进行日志的统一保存

2. 查找备份下的特定内容

grep -r 'codefun' /backup/  # -r 递归查询
/backup/192.168.80.130_bak/codefun.txt:hello codefun

3. 什么是 rsync

  • Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。

4. rsync 使用方法

  • 本地备份数据

    rsync /etc/hosts /tmp
    
  • 远程备份数据

    scp -rp /etc/hosts root@backup:/tmp  # -r 递归复制传输数据  -p 保持文件属性信息不变
    hosts                                  100%  373     0.4KB/s   00:00   
    
    rsync -rp 192.168.80.130_bak root@nfs01:/tmp # 没有斜线,直接备份目录,有斜线备份该目录下的所有内容
    
  • 删除文件 —无差别同步数据

    rsync -rp --delete /null/ backup:/backup/codefun
    # --delete 无差别同步数据,删除大文件时可快速删除
    
  • 查看文件命令

    rsync /etc/hosts
    -rw-r--r--            373 2021/04/26 10:16:03 hosts
    
    # 远程查看目录下的内容
    rsync root@backup:/etc/hosts
    root@backup's password: 
    -rw-r--r--            373 2021/04/26 10:16:03 hosts
    
    

4. rsync 命令帮助文档解读

1. 语法格式
SYNOPSIS
####本地备份数据: 
   Local:  rsync [OPTION...] SRC... [DEST]
   #src: 要备份的数据信息
   #dest: 备份到什么路径中
   
####远程备份数据:
   Access via remote shell:
   Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
   #[USER@]    --- 以什么用户身份拉取数据(默认以当前用户)
   #hosts      --- 指定远程主机IP地址或者主机名称
   #SRC        --- 要拉取的数据信息
   #dest       --- 保存到本地的路径信息
   Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
   #SRC        --- 本地要进行远程传输备份的数据
   #[USER@]    --- 以什么用户身份推送数据(默认以当前用户)
   #hosts      --- 指定远程主机IP地址或者主机名称
   #dest       --- 保存到远程的路径信息
   
####守护进程方式备份数据 --- 一直运行的进程
	#好处:
		#01. 进行一些配置管理
		#02. 进行安全策略管理
		#03. 实现自动传输备份数据
Access via rsync daemon:
#客户端做拉的操作:恢复数据
   Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
         rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
#客户端做推的操作:备份数据
   Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
   #SRC        --- 本地要进行远程传输备份的数据
   #[USER@]    --- 以什么用户身份推送数据(默认以当前用户)
   #HOST      --- 指定远程主机IP地址或者主机名称
   #::DEST       --- 备份服务器的模块信息
   --------------------- 命令示例 ------------------
	rsync -avz nfs.txt  rsync_backup@backup::backup
   -------------------------------------------------
    rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
2. 参数详解
-v --verb          # 显示详细的传输信息
-a --archive       # 命令的归档参数,包含 rtopgDl
-r --recursive     # 递归参数
-t --time          # 保持文件的修改时间不变
-o --owner         # 保持文件的属组信息不变
-g --group         # 保持文件的属主的信息不变
#PS: 如何让 -og 参数生效:需要将uid和gid改成root,将 fake super 注释掉
-p --perms           # 保持文件权限信息不变
-D                   # 保持设备文件的信息不变
-l --links           # 保持链接文件属性不变
-L                   # 保持链接文件数据信息不变
-P 			        # 显示文件传输的进度信息
--exclude=PATTERN    # 排除指定数据不被传输
--exclude-from=file  # 排除指定数据不被传输(批量排除)
--bwlimit=RATE       # 显示传输速率
--delete             # 无差异同步参数(慎用)

5. rsync 服务部署安装过程

  • Linux 系统安装部署服务流程

    1. 下载安装软件 — yum
    2. 编写配置文件
    3. 搭建服务环境 备份的目录/目录权限
    4. 启动服务程序 开机自动启动
    5. 测试服务功能
  • 守护进程的部署

    1. 下载安装软件

      rpm -qa | grep rsync || yum install -y rsync
      
    2. 编写配置文件

      man rsyncd.ocnf # 查看官方文档
      vim /etc/rsyncd.conf
      cat /etc/rsyncd.conf 
      ##create by codefun at 2021
      ###rsyncd.conf start###
      uid = rsync # 指定管理备份目录的用户
      gid = rsync # 指定管理备份目录的用户组
      port = 873  # 定义 rsync 备份服务的网络端口号
      fake super = yes
      use chroot = no # 和安全相关的配置
      max connetions = 200 # 最大的连接数
      timeout = 300 # 超时时间(second)
      pid file = /var/run/rsyncd.pid # 记录进程号码信息 
      lock file = /var/run/rsync.lock # 锁文件
      log file = /var/run/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 codefun"
      path = /backup # 指定备份目录
      
  1. 搭建服务环境 备份的目录/目录权限

      ### 以下操作都是根据配置文件的要求来操作
      # 创建rsync服务的虚拟用户
      	useradd rsync -M -s /sbin/nologin
      	
      # 创建备份服务认证密码文件
      	echo "rsync_backup:oldboy123" >/etc/rsync.password
      	chmod 600 /etc/rsync.password
      	
      # 创建备份目录并修改属主属组信息
      	mkdir /backup
        chown rsync.rsync /backup/
    
  2. 启动服务程序 开机自动启动

      # systemctl start rsyncd
      # systemctl status rsyncd
         Active: active (running) since Mon 2021-04-
      # systemctl enable rsyncd
      	Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
    
  3. 测试服务功能

      rsync -avz nfs.txt  rsync_backup@backup::backup
      
      Password: 
      sending incremental file list
      nfs.txt
      
      sent 106 bytes  received 43 bytes  99.33 bytes/sec
      total size is 12  speedup is 0.08
    
  4. 守护进程客户端配置 — 添加定时任务

    • 创建一个密码文件

        echo "code" > /etc/rsync.password
        [root@nfs01 ~]# chmod 600 /etc/rsync.password 
      
    • 测试免交互命令

        sync -avz /etc/hosts rsync_backup@backup::backup --password-file=/etc/rsync.password 
        sending incremental file list
        hosts
        
        sent 229 bytes  received 43 bytes  181.33 bytes/sec
        total size is 373  speedup is 1.37
      

6. 守护进程服务企业应用

1. 守护进程多模块功能
1. 编写配置文件
vim /etc/rsyncd.conf
---- 增加内容如下 ----
[devdata]
comment = "devdata dir by codefun"
path = /devdata
---- 精致的结尾   ----
mkdir /devdata && chown -R rsync:rsync /devdata
systemctl restart rsyncd
rsync -avz devdata/ rsync_backup@backup::devdata --password-file=/etc/rsync.password 

sending incremental file list
./
devtest0.txt
devtest1.txt
devtest2.txt
sent 220 bytes  received 84 bytes  608.00 bytes/sec
total size is 0  speedup is 0.00
2. 守护进程的排除功能实践
### 建立一个这样的目录 mkdir -p test/{1..3} touch test/{1..3}/{a..c}.txt ,然后仅不备份 2 目录下的 a.txt 和全部的 c 目录
 rsync -avz test/ --exclude=2/a.txt --exclude=3/* rsync_backup@backup::backup --password-file=/etc/rsync.password 
 # 这里的目录路径为 test/ 下的相对路径

### 1 2 3 目录下的 a.txt 都不备份
cat /root/exclude.txt 
1/a.txt
2/a.txt
3/a.txt
rsync -avz test/ --exclude-from=/root/exclude.txt rsync_backup@backup::backup --password-file=/etc/rsync.password 
3. 守护进程来创建备份目录
rsync -avz test/ rsync_backup@backup::backup/nfs01/ --password-file=/etc/rsync.password 
# 注意目录后面有斜线

7. 项目案例 — 备份项目

1. 项目需求
  • 所有服务器的备份目录必须都为/backup

    mkdir /backup
    
  • 备份的文件按照时间名字保存

  • 要打包的系统配置文件包括,但不限于

    • 定时任务服务的配置文件(/var/spool/cron/root)(适 web 和 nfs 服务器)
    • 开机自启动的配置文件(/etc/rc.local)(适合 web 和 nfs 服务器)
    • 日常脚本的目录 (/server/scripts)。
    • 防火墙iptables的配置文件(/etc/sysconfig/iptables)
    • 自己思考下还有什么需要备份呢
    cd / # 目的是用相对路径,不报错
    tar -zcvhf ./backup/web01/systemctl_rsync$(date +_%F_week%w).tar.gz ./etc/rc.local ./etc/sysconfig/iptables ./server/scripts/ ./var/spool/cron/root
    
    ./etc/rc.local
    ./etc/sysconfig/iptables/
    ./server/scripts/
    ./var/spool/cron/root
    ## -h 参数为打包链接文件的源文件
    
  • Web服务器站点目录假定为(/var/html/www)

    cd /
    tar -zcvhf ./backup/web01/www$(date +_%F_week%w).tar.gz ./var/html/www
    
  • Web服务器A访问日志路径假定为(/app/logs

    cd /
    tar -zcvhf ./backup/web01/www_log$(date +_%F_week%w).tar.gz ./app/logs
    
  • Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)

    find /backup -type f -mtime +7 | xargs rm
    
  • 备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本

    # 首先将六个月前的找出,然后用名字匹配出不是周一的,最后将他们删除
    find /backup/*.tar.gz --type f -mtime +180 ! -name '*week1' |xargs rm   
    
  • 部署好rsync守护进程服务

    ## 参照上文的守护进程的配置
    
  • 备份服务器上要按照备份数据服务器的内网IP为目录保存备份

    # 即远程传输时需要加上内网的IP的地址作为目录
    rsync /backup/web01 rsync_backup@backup::backup/web01/ --password-file=/etc/rsync.passwd # 因为要写入定时服务
    
  • 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查

    ### 用 md5 算法确保数据的完整性
    web01# md5sum /backup/web01/systemctl_rsync_2021-04-27_week2.tar.gz > /backup/web01/figer.txt
    backup# find /backup/ -type f -name "figer.txt" |xargs md5sum -c &> /tmp/result.txt
    
    
    
  • 把备份的成功及失败结果信息发给系统管理员邮箱

    • 打开 SMTP 服务
      在这里插入图片描述
      在这里插入图片描述

    • 获取授权码
      不能给你们

    • 编写linux服务邮件相关配置文件

      yum install -y mailx  # 若没有 /etc/mail.rc 文件
      vim /etc/mail.rc
      ------------------------------------------------
      set from=邮件账号 smtp=smtp.163.com  
      set smtp-auth-user=邮件账号 smtp-auth-password=授权码 smtp-auth=login
      ------------------------------------------------
      set from=gx163_163gx@163.com smtp=smtp.163.com
      set smtp-auth-user=gx163_163gx@163.com smtp-auth-password=PBOQWACPMQPCYSZX smtp-auth=login
      
    • 发送邮件测试

       echo "邮件发送测试" ---内容 |mail -s "邮件测试" ---主题 3061552332@qq.com
       mail -s "备份结果" 3061552332@qq.com < /tmp/result.txt
      
2. 环境准备
IP主机名节点
192.168.80.130nfs01nfs + rsync
192.168.80.131backuprsync
192.168.80.132web01nginx + rsync
3. 编写全网备份脚本
  • 客户端脚本:

  • 服务端脚本:backup date

    50 15 * * * /bin/sh /server/scripts/backup.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值