rsync备份服务简介与实战

rsync简介

Rsync(Remote Synchronization)是一款开源的,快速的,多功能的,可实现全量和增量的本地或远程数据同步备份的优秀工具.可实现cp,scp,rm,增量备份等功能

优点

  1. 同步时能够完整的保留数据目录结构、权限、时间、软硬链接等
  2. 能够实现增量同步, 每一次同步只会同步发生过改变的数据
  3. 文件传输效率高
  4. 支持匿名传输
  5. 无须特殊权限即可安装
  6. 支持流控制, 可以精确同步速度和使用的带宽大小

语法

   Local:  rsync [OPTION...] SRC... [DEST]

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

   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
           rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

常用选项:

​ -v, --verbose 显示详细的传输信息
​ -a, --archive 归档模式, 等于 -rlptgoD
​ -r, --recursive 递归复制目录
​ -t, --times 保持文件属性信息时间信息不变(修改时间)
​ -o, --owner 保持文件属主信息不变
​ -g, --group 保持文件属组信息不变
​ -p, --perms 保持文件权限信息不变
​ -D, 保持设备文件信息不变
​ -l, --links 保持链接文件属性不变
​ -L, 保持链接文件数据信息不变
​ -P, 保留那些因故没有完全传输的文件, 以加快随后的再次传输,可看到传输进度
​ --exclude=PATTERN 排除指定数据不被传输
​ --exclude-from=file 排除指定数据不被传输(批量排除)
​ --bwlimit=RATE 显示传输的速率 100Mb/8=12.5MB
​ --delete 删除 DST 上 SRC 不存在的数据

备份服务器rsync守护进程配置

  1. 下载安装软件

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

    #查看帮助文档
    man rsyncd.conf
    vim /etc/rsyncd.conf 
    #参数说明
    uid = rsync       # 指定管理备份目录的用户  
    gid = rsync       # 指定管理备份目录的用户组
    port = 873        # 定义rsync备份服务的网络端口号
    fake super = yes  # 将rsync虚拟用户伪装成为一个超级管理员用户 
    use chroot = yes   # 和安全相关的配置
    max connections = 200  # 最大连接数  同时只能有200个客户端连接到备份服务器
    timeout = 300          # 超时时间(单位秒)
    pid file = /var/run/rsyncd.pid   # 记录进程号信息 
    lock file = /var/run/rsync.lock  # 锁文件
    log file = /var/log/rsyncd.log   # rsync服务的日志文件 用于排错分析问题
    ignore errors                    # 忽略传输中的简单错误
    read only = false                # 指定备份目录是可读可写
    list = false                     # 使客户端可以查看服务端的模块信息
    hosts allow = 172.16.1.0/24      # 允许传输备份数据的主机(白名单)
    hosts deny = *         # 禁止传输备份数据的主机(黑名单)
    auth users = rsync_backup        # 指定认证用户 
    secrets file = /etc/rsync.password   # 指定认证用户密码文件 用户名称:密码信息(密码长度在8位一下,权限必须是600)
    
    [backup]                         # 模块信息
    comment = "backup dir "  
    path = /backup                   # 模块中配置参数 指定备份目录
    
  3. 创建rsync服务的系统用户

    useradd -r rsync
    
  4. 创建备份服务认证密码文

    echo "rsync_backup:123456" >/etc/rsync.password
    chmod 600 /etc/rsync.password
    
  5. 创建备份目录并修改属主属组信息

    mkdir /backup
    chown -R rsync.rsync /backup/
    
  6. 启动备份服务

    systemctl start rsyncd
    systemctl enable rsyncd
    systemctl status rsyncd
    
  7. 防火墙设置

    firewall-cmd --add-service rsyncd
    

备份实战

客户端脚本(172.16.1.41)

#!/bin/bash

#设置本机的备份目录
backup_dir="/backup"
ip_addr=$(hostname -i)

#创建备份目录
if [[ ! -d "/$backup_dir/$ip_addr" ]]; then
	mkdir -p /$backup_dir/$ip_addr
fi

cd /
#创建备份压缩包,包括:
#定时任务服务的配置文件(/var/spool/cron/root)、开机自启动的配置文件(/etc/rc.local)、
#日常脚本的目录(/server/scripts)、防火墙iptables的配置文件(/etc/sysconfig/iptables)
tar zchf /$backup_dir/$ip_addr/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables-config

#删除7天以前的备份
find $backup_dir/ -type f -mtime +7 -exec rm -rf {} \;

#生成文件指纹校验结果文件
find $backup_dir/ -type f -mtime -1 ! -name "finger*" -exec md5sum {} > $backup_dir/$ip_addr/finger.txt \;

#传输到备份服务器
rsync -avz /backup/ [email protected]::backup --password-file=/etc/rsync.password

在这里插入图片描述

写入定时任务

crontab -e 
0 0 * * *  /bin/bash /server/scripts/client_backup.sh >/dev/null 2>&1

服务端脚本(172.16.1.31)

#!/bin/bash
#删除半年前除每周一之外的备份
find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz" -exec rm -rf {} \;
#校验文件的完整性
find /backup/ -type f -name "finger.txt" -exec md5sum -c {} \; >/tmp/check.txt
#校验结果发送到邮箱
mail -s "check into $(date +%F)" [email protected] </tmp/check.txt

写入服务端定时任务

crontab -e

0 5 * * *  /bin/sh /server/scripts/backup_server.sh &>/dev/null

服务端邮箱配置方法

这里我们用163邮箱作为代理,首先要进行如下设置

在这里插入图片描述

开启IMAP/SMTP服务,获取授权码

在这里插入图片描述
备份服务器配置

yum install mailx -y
vim /etc/mail.rc #找不到就是没有安装mailx
#在末尾加入
set from=邮箱地址@163.com smtp=smtp.163.com
set smtp-auth-user=邮箱地址@163.com smtp-auth-password=授权码 smtp-auth=login
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章