news 2026/4/18 12:39:45

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/4/18 2:08:11

AI全景之第九章第一节:AI应用(金融科技)

9.2 金融科技:风控、投顾、量化交易的AI应用 金融科技的核心是运用技术创新金融服务。人工智能正从辅助工具,演进为驱动金融决策、风险管理和客户服务的核心引擎。本章将深入剖析AI在金融科技三大核心场景——风险控制、智能投顾与量化交易中的技术原理、演进路径与前沿实践…

作者头像 李华
网站建设 2026/4/18 2:04:38

【限时解读】Java 24结构化并发:未来高并发系统的基石技术

第一章:Java 24结构化并发的演进与核心理念Java 24引入的结构化并发(Structured Concurrency)标志着并发编程范式的重大演进。它通过将并发任务的生命周期与代码结构对齐,提升了程序的可读性、可维护性和错误追踪能力。结构化并发…

作者头像 李华
网站建设 2026/4/17 22:54:46

揭秘Quarkus 2.0原生镜像构建全过程:3步实现边缘节点资源利用率翻倍

第一章:Quarkus 2.0原生编译与边缘计算的融合变革 Quarkus 2.0 的发布标志着 JVM 生态在轻量化与高性能方向的重大突破,其核心亮点之一是原生镜像编译能力的全面优化。借助 GraalVM,Quarkus 可将 Java 应用编译为原生可执行文件,显…

作者头像 李华
网站建设 2026/4/18 2:05:15

让大模型的响应时间从5秒降至0.1秒?解决性能瓶颈的秘密就在这里

延迟与成本是目前基于大语言模型(LLM)的聊天机器人所面临的主要挑战。在检索增强生成(RAG)代理中,这个问题更加明显,因为在给出答案前我们需要多次调用大模型。通常,大型RAG应用的延迟可能超过5…

作者头像 李华
网站建设 2026/4/18 2:00:38

(Java外部内存编程秘籍):构建零拷贝系统的必备技能

第一章:Java外部内存编程概述Java 外部内存编程是 JDK 17 及后续版本中引入的重要特性,旨在让开发者能够更高效地管理堆外内存,避免传统 ByteBuffer 和 Unsafe 类带来的安全与维护问题。通过新的 Foreign Function & Memory API&#xff…

作者头像 李华