zoukankan      html  css  js  c++  java
  • Rsync备份服务小结

    Rsync备份服务小结

    rsync命令

    常用选项:
    -a           #归档模式传输, 等于-tropgDl    -t -r -o -p -g -D -l
    -v           #详细模式输出, 打印速率, 文件数量等
    -z           #传输时进行压缩以提高效率
    -r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
    -t           #保持文件时间信息
    -o           #保持文件属主信息
    -p           #保持文件权限
    -g           #保持文件属组信息
    -l           #保留软连接
    -P           #显示同步的过程及传输时的进度等信息
    
    -D           #保持设备文件信息
    -L           #保留软连接指向的目标文件
    -e           #使用的信道协议,指定替代rsh的shell程序
    
    --exclude=PATTERN   #指定排除不需要传输的文件模式
    --exclude-from=file #文件名所在的目录文件
    --partial           #断点续传
    --password-file=xxx #使用密码文件
    
    ----------------------------------------------------------------------------
    --bwlimit=100kb       #限速传输单位默认是kb (不用z选项)
    [root@web01 /tmp]# rsync -avP --bwlimit 100 /tmp/ rsync_backup@172.16.1.41::backup
    sending incremental file list
    ./
    data.txt
          5,537,792   1%  100.04kB/s
    ---------------------------------------------------------------------------
    --delete            #让目标目录和源目录数据保持一致(不用*)放前后皆可
    #推:数据与推送数据的源数据一致
    [root@web01 /tmp]# rsync -avP --delete /tmp/ rsync_backup@172.16.1.41::backup
    sending incremental file list
    deleting file2
    deleting file1
    sent 223 bytes  received 43 bytes  532.00 bytes/sec
    total size is 0  speedup is 0.00
    

    rsyncd备份案例

    #客户端需求
    1.客户端提前准备存放的备份的目录,目录规则如下:/backup/主机_IP_时间
    2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/主机_IP_时间
    3.客户端最后将备份的数据进行推送至备份服务器
    4.客户端每天凌晨1点定时执行该脚本
    5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
    
    #服务端需求
    1.服务端部署rsync,用于接收客户端推送过来的备份数据
    2.服务端需要每天校验客户端推送过来的数据是否完整
    3.服务端需要每天校验的结果通知给管理员
    4.服务端仅保留6个月的备份数据,其余的全部删除
    

    客户端需求解析

    1.客户端提前准备存放的备份的目录,目录规则如下:/backup/主机_IP_时间
    [root@web01 ~]# mkdir -p /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`
    
    2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/主机_IP_时间
    [root@web01 ~]# cd /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`
    [root@web01 /backup/web01_172.16.1.7_2020-08-12]# tar zcf conf.tar.gz /etc/passwd /var/log/messages &> /dev/null
    
    3.客户端最后将备份的数据进行推送至备份服务器
    生成校验码
    [root@web01 ~]# md5sum /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`/conf.tar.gz > /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`/check.md5
    文件推送检查
    [root@web01 ~]# rsync -avz /backup/`hostname`_`hostname -I | awk '{print $2}'`_`date +%F`/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsyncd.passwd
    
    4.客户端每天凌晨1点定时执行该脚本
    [root@web01 ~]# crontab -e	编写任务
    #每天凌晨1点进行文件备份
    00 01 * * * /bin/bash /scripts/backup.sh &> /dev/null
    [root@web01 ~]# crontab -l	检查任务
    #每天凌晨1点进行文件备份
    00 01 * * * /bin/bash /scripts/backup.sh &> /dev/null
    
    5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
    [root@web01 ~]# find /backup/ -type d -mtime +7 | xargs rm -rf
    
    

    服务端需求解析

    1.服务端部署rsync,用于接收客户端推送过来的备份数据
    [root@web01 ~]# yum install -y rsyncd
    [root@web01 ~]# echo '123456' > /etc/rsync.passwd
    [root@web01 ~]# cat /etc/rsync.passwd 
    [root@web01 ~]# chmod 600 /etc/rsync.passwd 
    [root@web01 ~]# systemctl start rsyncd
    [root@web01 ~]# netstat -lntp
    [root@web01 ~]# ps aux | grep rsync // ps -ef | grep rsync
    
    2.服务端需要每天校验客户端推送过来的数据是否完整
    md5sum -c /backup/*_`date +%F`/check.md5 > /backup/result.txt
    
    3.服务端需要每天校验的结果通知给管理员
    [root@backup ~]# yum install -y mailx
    [root@backup ~]# vim /etc/mail.rc 
    --------------------------------------------
    set from=xxx@qq.com
    set smtp=smtps://smtp.qq.com:465
    set smtp-auth-user=xxx@qq.com
    set smtp-auth-password=授权码
    set smtp-auth=login
    set ssl-verify=ignore
    set nss-config-dir=/etc/pki/nssdb/
    ----------------------------------------------
    [root@backup ~]# mail -s '备份数据完整校验' xxx@qq.com < /backup/result.txt
    
    4.服务端仅保留6个月的备份数据,其余的全部删除
    [root@backup ~]# find /backup/ -type d -mtime +180 |xargs rm -rf
    
    

    rsync双端服务配置

    客户端配置

    	1>#启动rsyncd服务
    # 安装rsyncd,rsync守护进程
    [root@backup ~]# yum install -y rsyncd
    
    #创建目录
    [root@backup ~]# mkdir /backup
    # 创建密码文件 
    [root@backup ~]# echo '123456' > /etc/rsyncd.passwd
    [root@backup ~]# cat /etc/rsyncd.passwd 
    123456
    # 将密码文件的权限改成600
    [root@backup ~]# chmod 600 /etc/rsyncd.passwd 
    
    # 启动rsync
    [root@backup ~]# systemctl start rsyncd
    # 检查启动情况
    [root@backup ~]# netstat -lntup | grep rsync
    tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1149/rsync          
    tcp6       0      0 :::873                  :::*                    LISTEN      1149/rsync 
    [root@backup ~]# ps aux | grep rsync
    root       1149  0.0  0.1 114748  1124 ?        Ss   02:54   0:00 /usr/bin/rsync --daemon --no-detach
    	
    	2>#写脚本
    [root@web01 ~]# vim /scripts/backup.sh
    #!/bin/bash
    #1.定义变量
    MOD=/backup
    HOST=`hostname`
    IP=`hostname -I | awk '{print $2}'`
    DATE=`date +%F`
    DIR=${MOD}/${HOST}_${IP}_${DATE}
    #2.创建目录
    mkdir -p $DIR
    #3.进到目录下并打包本地文件到当前目录
    cd $DIR
    tar zcf conf.tar.gz /etc/passwd /var/log/messages &> /dev/null
    #4.对文件生成验证文件
    md5sum $DIR/conf.tar.gz > $DIR/check.md5
    #5.定义环境变量 并推送数据($DIR包括目录本身,$DIR/ 推目录下的全部文件不包括目录本身)
    export RSYNC_PASSWORD=123456
    rsync -avz $DIR rsync_backup@172.16.1.41::backup
    #6.清理数据
    find $MOD -type d -mtime +7 | xargs rm -rf
    
    	3>#定时任务
    #客户端每天凌晨1点定时执行该脚本
    [root@web01 ~]# crontab -e	
    #每天凌晨1点定时执行该脚本
    00 01 * * * /bin/bash /scripts/backup.sh  &> /dev/null
    
    #定时任务检查
    [root@web01 ~]# crontab -l
    

    服务端配置

    	1>#配置rsyncd服务
    # 安装rsyncd,rsync的守护进程
    [root@backup ~]# yum install -y rsyncd
    
    # 写配置文件
    [root@backup ~]# 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 = gjs_backup
    secrets file = /etc/rsync.passwd
    log file = /var/log/rsyncd.log
    #####################################
    [backup]
    comment = welcome to oldboyedu backup!
    path = /backup
    
    # 创建rsync用户
    [root@backup ~]# useradd rsync -M -s /sbin/nologin 
    # 创建备份的目录
    [root@backup ~]# mkdir /backup
    # 给目录的属主和属组改成rsync
    [root@backup ~]# chown rsync.rsync /backup/
    # 创建密码文件 
    [root@backup ~]# echo 'gjs_backup:123456' > /etc/rsync.passwd
    [root@backup ~]# cat /etc/rsync.passwd 
    gjs_backup:123456
    
    # 将密码文件的权限改成600
    [root@backup ~]# chmod 600 /etc/rsync.passwd 
    # 启动rsync
    [root@backup ~]# systemctl start rsyncd
    # 检查启动情况
    [root@backup ~]# netstat -lntup | grep rsync
    tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1149/rsync          
    tcp6       0      0 :::873                  :::*                    LISTEN      1149/rsync 
    [root@backup ~]# ps aux | grep 'rsync'
    root       1149  0.0  0.1 114748  1124 ?        Ss   02:54   0:00 /usr/bin/rsync --daemon --no-detach
    
    	2>#安装并配置邮件服务
    #安装邮箱
    [root@backup ~]# yum install -y mailx
    #编辑邮件系统
    [root@backup ~]# vim /etc/mail.rc 
    set from=xxx@qq.com
    set smtp=smtps://smtp.qq.com:465
    set smtp-auth-user=xxx@qq.com
    set smtp-auth-password=授权码
    set smtp-auth=login
    set ssl-verify=ignore
    set nss-config-dir=/etc/pki/nssdb/
    
    	3>#编写服务端脚本
    # 写脚本文件
    [root@backup ~]# vim /root/check.sh
    #!/bin/bash
    # 1.定义模块目录变量
    MOD=/backup
    DATE=`date +%F`
    DIR=${MOD}/*_${DATE}
    # 2.服务端需要每天校验客户端推送过来的数据是否完整
    md5sum -c $DIR/check.md5 >> $MOD/result.txt
    # 3.服务端需要每天校验的结果通过QQ邮箱通知
    mail -s '校验备份数据完整性' xxx@qq.com < $MOD/result.txt
    # 4.服务端仅保留6个月的备份数据,其余的全部删除
    find $MOD/ -type d -mtime +180 |xargs rm -rf
    
    	4>#定时任务
    # 写定时任务
    [root@backup ~]# crontab -e
    00 01 * * * /bin/bash /scripts/check.sh &>/dev/null
    [root@backup ~]# crontab -l
    00 01 * * * /bin/bash /scripts/check.sh &>/dev/null
    
    
  • 相关阅读:
    用Bootstrap框架弹出iframe页面 在弹出的模态框中载人iframe页面,bootstrapiframe
    Jquery Ajax表单提交插件jquery form用法
    ASP.NET MVC 在控制器中接收视图表单POST过来的数据方法
    RabbitMQ用户管理+VirtualHost管理
    Linux 查看Oracle 信息
    页面元素的坐标位置
    Selenium之Action Chains类
    测试管理:用量化的思想管理工作
    Python selenium ---父子,兄弟,相邻节点定位方式详解
    webdriver 清空input元素的值
  • 原文地址:https://www.cnblogs.com/xuexiaosong/p/13495666.html
Copyright © 2011-2022 走看看