zoukankan      html  css  js  c++  java
  • 003 rsync客户端与服务端小脚本

    rsync备份案例

    rsync本地同步

    客户端:
    1.客户端提前准备存放的备份的⽬录,⽬录规则如下:/backup/nfs_172.16.1.31_2018-09-02
    2.客户端在本地打包备份(系统配置⽂件、应⽤配置等)拷⻉⾄/backup/nfs_172.16.1.31_2018-
    09-02
    3.客户端最后将备份的数据进⾏推送⾄备份服务器
    4.客户端每天凌晨1点定时执⾏该脚本
    5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
    
    
    
    服务端需求:
    1.服务端部署rsync,⽤于接收客户端推送过来的备份数据
    2.服务端需要每天校验客户端推送过来的数据是否完整
    3.服务端需要每天校验的结果通知给管理员
    4.服务端仅保留6个⽉的备份数据,其余的全部删除
    
    #准备服务端,分析脚本逻辑
    #创建目录
    mkdir /backup/$(hostname)_$(hostname -I | awk '{print $2}')_$(date +%F)
    
    #打包目录
    tar zcf /backup/$(hostname)_$(hostname -I | awk '{print $2}')_$(date +%F)/conf.tar.gz /var/log/messages
    
    #推送文件
    rsync -avz /backup/ rsync_backup@*.*.*.*::backup
    
    #写成脚本
    #!/bin/bash
    #baimo
    #用于备份
    
    DIR=/backup
    HOSTNAME=$(hostname)
    IP=$(hostname -I | awk '{print $2}')
    DATE=$(date +%F)
    SRC=${DIR}/${HOSTNAME}_${IP}_${DATE}
    
    #创建备份目录
    mkdir $SRC -p
    
    #打包文件
    cd /var
    tar zcf $SRC/conf.tar.gz ./log/messages
    
    #生成校验码
    md5sum $SRC/conf.tar.gz > $SRC/flag
    
    #推送文件
    export RSYNC_PASSWARD=123456
    rsync -az $DIR/ rsync_backup@192.168.15.101::backup
    
    #删除七天前的数据
    find $DIR/ -type d -mtime +7 | xargs rm -rf
    
    
    #定时任务
    crontab -e
    0 1 * * * /bin/bash /root/client.sh
    

    服务端备份案例

    #/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 ~]# yum install mailx -y
    #配置/etc/mail.rc文件
    [root@backup ~]# mail -s "校验结果" xxx@qq.com < ceshi.txt
    
    #脚本
    
    #!/bin/bash
    #baimo
    #用于备份
    DIR=/backup
    HOSTNAME=$(hostname)
    IP=$(hostname -I | awk '{print $2}')
    DATE=$(date +%F)
    SRC=${DIR}/${HOSTNAME}_${IP}_${DATE}
    
    #校验文件
    md5sum -c $DIR/*_$DATE/flag > $DIR/result.txt
    
    #将校验结果发送给管理员邮箱
    mail -s "$DATE备份文件 校验的结果" 1466705884@qq.com < $DIR/result.txt
    
    #删除6个月之前的数据
    find $DIR/ -type d -mtime +180 | xargs rm -rf
    
    #服务端脚本加入定时任务
     crontab -e
     0 7 * * * /bin/bash /root/server.sh &> /dev/null
    

    Rsync结合inotify

    #安装
    [root@web1 ~]# yum install inotify-tools -y
    #参数
    -m 持续监控
    -r 递归
    -q 静默,仅打印时间信息
    --timefmt 指定输出时间格式
    --format 指定事件输出格式
    %Xe 事件
    %w 目录
    %f 文件
    -e 指定监控的事件
    access 访问
    modify 内容修改
    attrib 属性修改
    close_write 修改真实文件内容
    open 打开
    create 创建
    delete 删除
    umount 卸载
    
    #测试
    /usr/bin/inotifywait  -mrq  --format '%Xe  %w  %f' -e create,modify,delete,attrib,close_write  /backup
    

    [root@backup ~]# vim rsyn-inotify.sh

    #!/bin/bash
    #实时推送备份文件脚本
    
    export RSYNC_PASSWORD=123
    
    dir=/var/log/messages   #监控的文件
    inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write ${dir} | while read line; do bash /root/script/c_backup.sh ; done &>/dev/null &
    
    
  • 相关阅读:
    成功率最高的发送邮件代码
    更改ReSharper的智能提示
    [转]SQL 2000 Insert返回自动编号id三种方法比较
    得到汉字的拼音首字母
    不能正确显示UltraWebGrid的解决方法.
    [转]asp.net使用json
    [转] 技术是一种加速器 但重要的不是技术
    [原]模仿Google首页的PNG动画效果
    一个通过DataSet操作XML的类
    C# partial 关键字详解
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14584309.html
Copyright © 2011-2022 走看看