news 2026/7/11 14:54:50

linux原生工具rsync增量备份

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux原生工具rsync增量备份

甲方服务器上面的附件有大几百G需要备份,网络备份断网对新旧文件都有问题,每次批量备份影响效率,上司提出了一个解决方法 :linux工具、增量备份。

增量备份即只备份新增/修改的文件,甚至包含同步删除(此处只备份暂未添加)。

工具:linux原生工具rsync

  1. 首先查看备份目录内存大小是否满足
  2. 创建.sh文件,可将下面代码直接复制。
  3. 增加权限
    chmod +x bak_attach.sh
  4. 可能遇到的问题:脚本兼容问题。如果你是Windows打开记事本从头编辑然后把文件甩给linux则会出现。(下面代码已做了处理无须重复)
    # 直接替换脚本中的 ^M 字符(命令中的 \r 对应 ^M) sed -i 's/\r$//' file.sh

功能:

  • 旧目录文件复制到新目录文件(包含子目录文件)
  • 日志成功错误会直接打印在终端
  • 执行前会检测内存 是否满足规定的10/100G(一开始是100G,测试改为10G)
  • 第一次完整备份,后续增量备份(只备份新增/修改)
  • 完美复制远文件元信息
#!/bin/bash # 增量备份脚本(封装rsync):备份整个目录下的所有文件、子目录及子目录内的所有内容 # 修改后:所有输出直接打印到终端,不生成日志文件;备份成功后打印新文件存放目录 # 1. 配置参数(========= 核心路径详细注释 =========) # 【源路径/老路径】:服务器上原始附件存放的目录(需要被备份的源目录) # 含义:这是你要备份的"原文件所在目录",也就是存量附件和新增/修改附件的存放目录 # 末尾的 "/" 必须保留:表示复制该目录下的所有内容(文件+子目录),而非复制目录本身 SOURCE_DIR="/home/ppt/" # 【目标路径/新路径】:备份文件要存储的目录(备份后的文件存放目录,即"新路径") # 含义:这是你要把附件备份到的目标位置,增量备份会把变更的文件同步到这个目录 # 支持两种形式:1. 本地目录(如下) 2. 跨服务器目录(示例:user@192.168.1.100:/backup/attachments/) # 末尾的 "/" 建议保留:和源路径格式统一,确保备份目录结构一致 TARGET_DIR="/home/backup/renmin/" # 2. 检查磁盘空间(剩余空间小于10G则停止备份,此处原100G改为10G,可按需调整) # ${TARGET_DIR%/*} :自动获取目标目录的上级目录(用于查询磁盘剩余空间) FREE_SPACE=$(df -m ${TARGET_DIR%/*} | awk 'NR==2{print $4}') if [ $FREE_SPACE -lt 10240 ]; then # 直接打印到终端,去掉日志重定向 echo "$(date +'%Y-%m-%d %H:%M:%S') - 错误:备份目录剩余空间不足10G,当前剩余:${FREE_SPACE}M" exit 1 fi # 3. 执行rsync增量备份 # 核心说明:该命令会备份 源路径(SOURCE_DIR) 下的【所有文件+所有子目录+子目录内的所有层级文件】 # -a 参数:归档模式,自动递归备份子目录,保留文件权限、时间戳等元信息(确保目录结构完整) # --delete 参数:同步删除操作(源目录删除的文件,备份目录也会同步删除,保持完全一致) # 去掉日志重定向,rsync进度直接打印到终端 echo "$(date +'%Y-%m-%d %H:%M:%S') - 开始执行增量备份" rsync -aP --delete --bwlimit=10240 $SOURCE_DIR $TARGET_DIR # 4. 判断备份是否成功 if [ $? -eq 0 ]; then # 直接打印成功信息到终端 echo "$(date +'%Y-%m-%d %H:%M:%S') - 增量备份执行成功" # 新增:打印新备份文件的存放目录(目标目录),清晰展示新文件位置 echo "📌 新备份文件(新增/修改)存放目录:$TARGET_DIR" # 可选:额外打印源目录,方便核对 # echo "📌 原始文件来源目录:$SOURCE_DIR" else # 直接打印失败信息到终端 echo "$(date +'%Y-%m-%d %H:%M:%S') - 错误:增量备份执行失败" # 可选:发送邮件/短信告警(按需启用,需自行配置邮件服务) # mail -s "附件增量备份失败" admin@xxx.com exit 1 fi # 注:已移除日志文件生成和归档逻辑,无需再清理旧日志
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 7:16:45

Spring Native AOT 编译避坑指南:99%开发者忽略的3个关键配置

第一章:Spring Native AOT 提前编译部署Spring Native 是 Spring 生态中一项革命性技术,它利用 GraalVM 的原生镜像功能,将 Spring 应用提前编译(Ahead-of-Time, AOT)为本地可执行文件。这种方式显著提升了应用的启动速…

作者头像 李华
网站建设 2026/7/7 12:46:47

2025专科生必看!8款AI论文工具测评,开题报告轻松过

2025专科生必看!8款AI论文工具测评,开题报告轻松过 2025年专科生论文写作工具测评:为何值得一看? 随着AI技术的不断发展,越来越多的专科生开始借助智能工具提升论文写作效率。然而,面对市场上五花八门的AI论…

作者头像 李华
网站建设 2026/7/1 22:31:42

Java企业级AI开发:JBoltAI如何破解落地难题?

在企业数智化转型浪潮中,Java技术团队面临着一个共性难题:如何快速将AI能力融入现有业务系统,同时避免技术门槛过高、开发效率低下的困境?JBoltAI作为专为Java企业打造的AI应用开发框架,给出了一套颇具针对性的解决方案…

作者头像 李华
网站建设 2026/7/8 7:55:41

conda环境迁移:从本地到TensorFlow 2.9云镜像的一键同步

conda环境迁移:从本地到TensorFlow 2.9云镜像的一键同步 在深度学习项目开发中,你是否曾遇到这样的场景:本地调试一切正常,代码一上传到云端训练服务器却报错“模块找不到”或“版本不兼容”?明明用的是同样的模型脚本…

作者头像 李华
网站建设 2026/7/8 7:55:41

【后量子密码迁移必读】:Java平台ML-KEM集成的5大关键步骤

第一章:Java平台抗量子加密演进背景随着量子计算技术的快速发展,传统公钥加密体系如RSA和ECC面临被Shor算法高效破解的风险。Java作为企业级应用广泛采用的开发平台,其安全体系必须提前应对后量子时代带来的挑战。近年来,NIST持续…

作者头像 李华