博客
关于我
架构 -- rsync补充02
阅读量:534 次
发布时间:2019-03-09

本文共 2267 字,大约阅读时间需要 7 分钟。

架构 – rsync补充

<p/rsync 是一个高效的文件同步工具,可以用于本地和远程备份。在使用 rsync 时,了解其各个参数及其作用,可以帮助我们更高效地管理备份任务。本节将从 rsync 的基本使用、到实际案例分析,以及 rsync 与备份系统的结合,逐步展开讨论。

rsync 参数说明

rsync 是一个灵活且强大的工具,其选项众多,以下是一些常用的参数和组合:

  • -a:启用归档模式,等效于 -t -r -o -p -g -D -l,主要用于保留文件和目录的属性。
  • -v:详细模式,输出包括传输速度、文件数量等信息。
  • -z:启用压缩,提高传输效率。
  • --exclude=PATTERN:指定排除不需要传输的文件。
  • --partial:支持断点续传,用户中断后可以恢复。
  • --bwlimit=100:限制传输速度,避免占用过多带宽。

Rsync 备份案例

客户端需求

  • 客户端需要提前准备存放备份目录,并遵循特定规则命名。
  • 客户端定期打包系统配置文件、应用配置等数据,并复制到指定目录。
  • 客户端每天凌晨1点执行备份任务。
  • 客户端本地保留最近7天的备份数据,避免磁盘占用过多。
  • 服务端需求

  • 服务端部署 rsync,用于接收客户端推送的备份数据。
  • 服务端需定期校验客户端推送的数据完整性。
  • 服务端每天校验结果通知管理员。
  • 服务端仅保留最近6个月的备份数据,其余数据销毁。
  • 客户端操作

    1. 创建备份目录

    mkdir /backup && echo '创建备份目录成功' || true

    2. 打包文件

    # 方式一:打包并移动文件tar zcf /backup/$(hostname)_$(date +%F)/conf.tar.gz /var/log/maillogmv /backup/$(hostname)_$(date +%F)/conf.tar.gz /backup/$(hostname)_$(date +%F)# 方式二:直接打包到指定目录tar czf /backup/$(hostname)_$(date +%F)/conf.tar.gz /var/log/maillog

    3. 推送文件

    rsync -avz /backup/ rsync_mm@172.16.1.41::backup --bwlimit=100

    脚本化操作

    #!/bin/bash# 定义变量DIR=/backupHOSTNAME=$(hostname)IP=$(hostname -I | awk '{print $2}')DATE=$(date +%F)SRC=${DIR}/${HOSTNAME}_${IP}_${DATE}# 创建备份目录[ -d $SRC ] || mkdir $SRC -p# 租用空间并打包数据cd /var && tar zcf $SRC/conf.tar.gz ./log/maillog# 推送文件export RSYNC_PASSWORD=123rsync -az $DIR/ rsync_mm@172.16.1.41::backup > /dev/null 2>&1# 定时任务crontab -e0 1 * * * /bin/bash /root/client.sh

    服务端操作

    1. 配置邮件发送

    vim /etc/mail.rcset from=171554782@qq.comset smtp=smtps://smtp.qq.com:465set smtp-auth-user=171554782@qq.comset smtp-auth-password=nvaeranunveledjaset ssl-verify=ignore

    2. 校验文件

    md5sum -c /backup/*_$(date +%F)/flag

    3. 服务端脚本

    #!/bin/bashDIR=/backupHOSTNAME=$(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}备份文件校验结果" 1715554782@qq.com < $DIR/result.txt# 删除过期数据find $DIR/ -type d -mtime +180 | xargs rm -rf

    4. 定时任务

    crontab -e10 12 * * * /bin/bash /root/server.sh > /dev/null

    Rsync 结合 inotify 实现实时备份

    1. 安装 inotify 工具

    包名:inotify-tools

    2.Monitoring目录变化

    /usr/bin/inotifywait -mrq --format '%w %f' -e create,delete,attrib,close_write /backup > /dev/null 2>&1

    3. 实时备份脚本

    #!/bin/bashdir=/backupwhile true; do  cd $dir && rsync -az -R --delete . rsync_mm@172.16.1.41::backup  sleep 60done

    转载地址:http://svusz.baihongyu.com/

    你可能感兴趣的文章
    面试官:这些错误都没见过,还敢说会安装Elasticsearch?
    查看>>
    Java复习面试指南-06为什么要进行数据类型转换?什么情况下会进行自动类型转换?
    查看>>
    [源码解析] 并行分布式任务队列 Celery 之 EventDispatcher & Event 组件
    查看>>
    QQ框架的搭建
    查看>>
    Hololens2开发笔记-捕获照片到内存并上传至服务器(unity)
    查看>>
    OpenCV4(6)-LookUpTable(LUT)查找表(C++,Python,JS)
    查看>>
    OpenCV4.0进阶(4)图像噪声
    查看>>
    SkyWalking性能剖析
    查看>>
    JavaScript——原生
    查看>>
    vue动态组件与插件到底是什么?
    查看>>
    【2021.5.8 NOI模拟】贪心
    查看>>
    python3下安装jupyter kernel报错问题
    查看>>
    计算机网络参考模型,图文详解,更懂你!
    查看>>
    mybatis 简单学习
    查看>>
    操作系统学科复习图
    查看>>
    P1226 【模板】快速幂||取余运算
    查看>>
    LeetCode197.打家劫舍
    查看>>
    pandas(10):数据增删改
    查看>>
    第7周编程作业
    查看>>
    Codeforces Round #426 (Div. 2) The Useless Toy
    查看>>