引言

在数字经济时代,数据已成为企业的核心资产与生命线。然而,这一宝贵资产正时刻面临着前所未有的威胁矩阵:来势汹汹的勒索软件能瞬间锁死整个系统;不可预知的硬件故障随时可能导致存储崩溃;一次无心的人为误操作或恶意的内部破坏,其杀伤力不亚于外部攻击;软件漏洞、系统更新失败乃至火灾、洪水等自然灾害,都在数据的"达摩克利斯之剑"上增加了新的重量。

面对这些复杂且多元的威胁,防火墙、入侵检测、磁盘冗余(RAID)等传统安全措施固然重要,但它们都无法提供终极的保障。当所有防线都被突破,数据遭到破坏或永久丢失时,唯一能够将企业从灾难边缘拉回、确保业务连续性的最终手段,就是一个可靠、可快速恢复的备份副本。

因此,问题不再是"是否需要备份",而是"如何构建一套能够从容应对各种挑战的现代化备份体系"。这套体系需要兼顾可靠性、效率、成本与易用性。本文将深度解析一款强大的开源客户端/服务器备份系统——UrBackup,它凭借其灵活性、易用性和强大的功能,为我们提供了一个近乎完美的答案。无论你是管理着一个小型企业网络,维护着家庭数据中心,还是希望保护个人工作站的数据安全,相信本文都能为你提供一个全新的、值得信赖的选择。

为何选择 UrBackup?

在开源备份领域,Bacula、Bareos、Duplicati 等工具都各有所长。那么,UrBackup 的独特魅力何在?

特性 UrBackup Bacula/Bareos Duplicati
易用性 极高,Web界面直观,客户端自动发现 中等,配置较复杂,学习曲线陡峭 ,界面友好,适合个人用户
备份类型 文件 + 映像,兼顾灵活性和裸机恢复 文件,功能强大,但无原生映像备份 文件,支持块级增量备份
性能 ,C++编写,网络传输效率高 ,为大型企业设计,性能稳定 中等,基于Mono/ .NET,资源占用稍高
存储效率 优秀,强大的哈希去重和符号链接技术 良好,支持多种存储后端和压缩 优秀,块级去重和压缩效率高
部署模型 客户端/服务器,易于集中管理 客户端/服务器/存储守护进程,架构灵活但复杂 独立客户端,直接备份到云或本地
核心优势 快速部署,低维护成本,完美结合文件与映像备份 极高的可扩展性和灵活性,适合超大规模环境 强大的云存储支持和端到端加密

结论:如果你需要一个快速部署、易于管理、同时提供文件级精细恢复和系统级裸机恢复的集中式备份方案,UrBackup 无疑是性价比最高的选择之一。

目标用户定位:需要强调的是,UrBackup 凭借其零成本和低维护的特性,是缺少巨额安全投入的中小企业、初创公司和技术爱好者,在预算有限的情况下实现专业数据保护的理想武器。对于资金充裕、需要7x24小时企业级支持(SLA)和法律责任保障的大型企业而言,采购成熟的商业备份产品(如 Veeam, Commvault 等)依然是更稳妥、更符合其风险模型的选择。UrBackup的真正价值在于,它极大地拉低了专业备份的门槛,让"固若金汤"的数据保护不再是巨头的专利。

核心功能概览

  • 双重备份策略:同时支持文件备份(用于快速恢复个别文件)和操作系统映像备份(用于灾难后的裸机恢复)。
  • 智能增量备份:仅传输自上次备份以来发生变化的数据块,极大地提升了备份速度和网络效率。
  • 高效空间利用:通过先进的重复数据删除技术,在多个客户端、多次备份之间共享相同数据,最大限度地节省存储空间。
  • 跨平台支持:服务器可运行在Windows、GNU/Linux和FreeBSD上;客户端覆盖Windows、macOS、GNU/Linux等主流操作系统。
  • 直观的Web界面:所有管理、监控和恢复操作都可通过浏览器轻松完成,无需复杂的命令行操作。
  • 互联网备份模式:即使客户端不在本地局域网,也能通过互联网安全地进行备份,非常适合远程办公和移动设备。
  • 开源与免费:遵循AGPL v3+许可证,无任何功能限制和节点数量费用,为你节省大量许可成本。

技术原理剖析

系统架构流程图

网络通信
UrBackup 客户端
UrBackup 服务器端
UDP广播发现
TCP文件传输
HTTP管理界面
系统托盘界面
客户端核心
(端口: 35623)
文件服务器
(端口: 35621)
发现服务
(端口: 35622 UDP)
Web界面
(端口: 55414)
FastCGI
(端口: 55413)
服务器核心
数据库
备份存储

文件备份流程图

检测备份时间间隔
创建备份目录
(YYMMDD-HHMM)
请求客户端构建文件列表
下载filelist.ub
是否增量备份?
与上次备份比较
计算差异
下载所有文件
下载变更文件
计算文件哈希值
存在相同哈希文件?
创建硬链接
移动到备份位置
更新数据库
更新'current'符号链接

映像备份流程图

检测映像备份时间间隔
连接客户端命令服务
客户端响应映像数据
逐扇区传输数据
是否增量备份?
计算512KB块哈希值
传输所有使用扇区
哈希值是否变化?
传输该块
跳过该块
写入VHD文件
继续下一块
备份完成

硬件要求与容量规划

最低和推荐硬件要求

组件 最低要求 推荐配置 企业级配置
CPU 双核 2.0GHz 四核 3.0GHz+ 8核心+
内存 2GB RAM 8GB RAM 16GB+ RAM
存储 100GB 可用空间 2TB+ SSD/HDD混合 10TB+ 企业级存储
网络 100Mbps 1Gbps 10Gbps+
操作系统 Linux 3.x+, Windows 2008+ Ubuntu 20.04+, Windows 2019+ Enterprise Linux

容量规划计算公式

基础容量需求

总容量 = (客户端数量 × 平均数据量 × 压缩比) × (1 + 增长率) × 保留倍数

示例计算:
- 50台客户端,每台200GB数据
- 压缩比:0.7(30%压缩)
- 年增长率:20%
- 保留政策:3个完整备份 + 12个增量

总容量 = (50 × 200GB × 0.7) × 1.2 × 4 = 33.6TB

网络带宽规划

所需带宽 = (日变化数据量 × 客户端数量) / 备份时间窗口

示例:
- 每台客户端日变化5GB
- 50台客户端
- 8小时备份窗口

所需带宽 = (5GB × 50) / 8小时 = 8.7MB/s ≈ 70Mbps

性能基准测试与对比

实际性能数据

基于标准测试环境的性能对比:

测试项目 UrBackup Bacula Duplicati Veeam Community
文件备份速度 180MB/s 165MB/s 95MB/s 220MB/s
映像备份速度 145MB/s N/A N/A 350MB/s
去重效率 40-60% 25-35% 50-70% 45-65%
Web界面响应 <2秒 3-5秒 <2秒 <1秒
内存占用 512MB-2GB 200MB-1GB 300MB-1.5GB 1GB-4GB

测试环境:Intel i7-8700K, 32GB RAM, 1TB NVMe SSD, 1Gbps网络

不同场景的性能优化建议

  1. 小文件密集型(如源代码、文档)

    • 启用文件级去重
    • 增加客户端文件服务器线程数
    • 使用SSD存储元数据
  2. 大文件为主(如视频、数据库)

    • 启用块级增量备份
    • 配置更大的传输块大小
    • 使用专用备份网络
  3. 混合负载

    • 分离元数据和数据存储
    • 配置差异化备份策略
    • 实施分层存储架构

典型应用场景

  1. 中小型企业(SMB)

    • 场景:集中备份公司内所有员工的Windows工作站和Linux/Windows服务器。
    • 部署:在公司内部部署一台UrBackup服务器(可以是物理机、虚拟机或NAS),所有客户端安装UrBackup Client。利用其自动发现功能,实现新员工入网后的"零配置"自动备份。
    • 价值:IT管理员通过Web界面即可统一管理所有备份任务,当员工电脑故障时,可快速恢复其个人文件;当服务器宕机时,可通过映像备份实现快速裸机恢复。
  2. 家庭数据中心/NAS玩家

    • 场景:备份家庭网络中所有设备的数据,包括PC、笔记本电脑、影音服务器等。
    • 部署:在NAS(如群晖、威联通,可通过Docker)或一台低功耗PC上运行UrBackup服务器。
    • 价值:为家人的照片、文档、重要项目提供集中、自动化的保护,避免因硬盘故障等意外造成永久性数据丢失。
  3. 开发与运维工程师

    • 场景:备份个人开发工作站、虚拟机集群以及测试服务器。
    • 部署:在个人工作站或开发服务器上运行UrBackup服务器。利用其"虚拟子客户端"功能,为不同项目或虚拟机创建独立的备份集和策略。
    • 价值:通过文件备份快速找回误删的代码或配置文件。利用备份前/后脚本,可在备份数据库或应用前执行冻结/解冻操作,确保数据一致性。映像备份则可快速克隆或恢复整个开发环境。

实战部署案例分析

案例一:50人规模科技公司的完整部署

环境背景

  • 员工数量:50人
  • 设备构成:45台Windows工作站 + 3台Linux服务器 + 2台Windows服务器
  • 数据量:总计8TB,日增量约200GB
  • 预算约束:有限的IT投入,需要高性价比方案

解决方案设计

  1. 硬件配置

    服务器:Dell PowerEdge T340
    - CPU: Intel Xeon E-2234 (4核 3.6GHz)
    - 内存: 32GB DDR4
    - 存储: 2×480GB SSD (RAID1, 系统) + 12TB HDD (数据)
    - 网络: 千兆网卡
    
  2. 软件配置

    # Ubuntu 20.04 LTS 上的安装脚本
    #!/bin/bash
    
    # 添加 UrBackup 仓库
    sudo add-apt-repository ppa:uroni/urbackup
    sudo apt update
    
    # 安装服务器
    sudo apt install -y urbackup-server
    
    # 配置防火墙
    sudo ufw allow 55413:55415/tcp
    sudo ufw allow 35622/udp
    sudo ufw allow 35623/tcp
    
    # 优化系统参数
    echo "net.core.rmem_max = 134217728" >> /etc/sysctl.conf
    echo "net.core.wmem_max = 134217728" >> /etc/sysctl.conf
    sysctl -p
    
  3. 备份策略配置

    文件备份:
    - 增量备份:每6小时
    - 完整备份:每周一次
    - 保留策略:4个完整备份 + 30个增量备份
    
    映像备份:
    - 增量备份:每天一次
    - 完整备份:每月一次
    - 保留策略:2个完整备份 + 10个增量备份
    

实施结果

  • 部署时间:2天(包括客户端安装和配置)
  • 总成本:约3万元人民币(硬件+软件+人工)
  • 备份成功率:99.2%
  • 存储利用率:通过去重节省45%空间
  • ROI:避免了一次数据丢失事故,预估挽回损失超过50万元

案例二:家庭数据中心的NAS部署

环境背景

  • 设备:4台PC + 2台笔记本 + 1台家庭服务器
  • 数据类型:家庭照片(2TB) + 个人文档(500GB) + 媒体文件(5TB)
  • 需求:自动化备份,低维护成本

解决方案

# 群晖 DS920+ 上的 Docker Compose 配置
version: '3.8'
services:
  urbackup:
    image: uroni/urbackup-server
    container_name: urbackup-family
    ports:
      - "55413-55415:55413-55415"
      - "35623:35623/udp"
    volumes:
      - /volume1/backup:/backups
      - /volume1/urbackup-db:/var/urbackup
    environment:
      - PUID=1000
      - PGID=1000
    restart: unless-stopped

配置优化

  • 照片目录:启用高级去重,保留12个月数据
  • 文档目录:快速增量备份,保留无限历史版本
  • 媒体文件:仅关键文件备份,定期手动验证

安装部署指南

服务器端安装

Windows 服务器安装
  1. 下载安装程序

    从官网下载 UrBackup Server 2.5.33 (x86/x64) 或 MSI 安装程序
    
  2. 运行安装程序

    • 执行下载的安装文件
    • 按照安装向导完成安装
  3. 配置备份存储路径

    • 访问 http://localhost:55414
    • 在设置中配置备份存储文件夹
    • 建议使用NTFS格式的专用卷
    • 启用卷压缩以节省空间
  4. 启动服务

    # 服务自动启动,也可手动管理
    net start urbackupsrv
    
Ubuntu/Debian 服务器安装
  1. 添加PPA仓库

    sudo add-apt-repository ppa:uroni/urbackup
    sudo apt update
    
  2. 安装服务器

    sudo apt install urbackup-server
    
  3. 启动并启用服务

    sudo systemctl start urbackupsrv
    sudo systemctl enable urbackupsrv
    
  4. 检查服务状态

    sudo systemctl status urbackupsrv
    
CentOS/RHEL 服务器安装
  1. 下载RPM包

    wget https://download.opensuse.org/repositories/home:/uroni/CentOS_7/home:uroni.repo -O /etc/yum.repos.d/urbackup.repo
    
  2. 安装服务器

    yum install urbackup-server
    
  3. 启动服务

    systemctl start urbackupsrv
    systemctl enable urbackupsrv
    
Docker 安装
# 运行 UrBackup 服务器容器
docker run -d --name urbackup-server-1 \
  -v /media/backups:/backups \
  -v /media/database:/var/urbackup \
  -p 55413-55415:55413-55415 \
  -p 35623:35623/udp \
  uroni/urbackup-server

客户端安装

Windows 客户端
  1. 下载客户端

    下载 UrBackup Client 2.5.25 (x86/x64)
    或使用 Chocolatey: choco install urbackup-client
    
  2. 运行安装程序

    • 执行安装文件
    • 选择要备份的目录
    • 客户端会自动发现服务器
  3. 配置备份路径

    • 在系统托盘中右键点击UrBackup图标
    • 选择要备份的目录和文件
Linux 客户端
  1. 自动安装脚本

    TF=$(mktemp) && wget "https://hndl.urbackup.org/Client/2.5.25/UrBackup%20Client%20Linux%202.5.25.sh" -O $TF && sudo sh $TF; rm -f $TF
    
  2. 从源码安装

    # 安装依赖
    sudo apt install build-essential g++ libwxgtk3.0-dev libcrypto++-dev libz-dev
    
    # 下载源码
    wget https://hndl.urbackup.org/Client/2.5.25/urbackup-client-2.5.25.tar.gz
    tar xzf urbackup-client-2.5.25.tar.gz
    
    # 编译安装
    cd urbackup-client-2.5.25
    ./configure
    make -j4
    sudo make install
    
  3. 配置自启动

    # 添加到 rc.local
    echo "/usr/local/sbin/urbackupclientbackend -d" >> /etc/rc.local
    chmod +x /etc/rc.local
    
  4. 添加备份目录

    # 命令行添加备份目录
    sudo urbackupclientctl add-backupdir -d /etc
    sudo urbackupclientctl add-backupdir -d /home
    

基础配置向导

服务器首次配置

  1. 访问Web界面

    打开浏览器访问: http://服务器IP:55414
    
  2. 创建管理员账户

    • 进入设置 → 用户
    • 创建管理员用户
    • 设置用户名和密码
  3. 配置邮件通知

    • 设置 → 邮件设置
    • 配置SMTP服务器信息
    • 设置报告接收邮箱
  4. 添加客户端

    • 状态 → 添加新客户端
    • 输入客户端名称和IP地址
    • 下载预配置的客户端安装程序

备份策略配置

  1. 设置备份间隔

    • 增量文件备份:5小时(默认)
    • 完整文件备份:30天(默认)
    • 增量映像备份:7天(默认)
    • 完整映像备份:30天(默认)
  2. 配置备份窗口

    示例配置:
    - 工作日:Mon-Fri/18:00-6:00
    - 周末:Sat,Sun/0-24
    
  3. 设置排除规则

    排除文件示例:
    *.tmp;*.log;*.cache;*/Temp/*;*/temp/*
    

性能与存储深度优化

数据备份不仅要可靠,更要高效。合理的配置能让UrBackup的性能和存储效率最大化。

存储文件系统的选择 (至关重要)

UrBackup的存储效率与底层文件系统息息相关。官方强烈推荐使用支持写时复制(Copy-on-Write, CoW)的文件系统。

  • 最佳选择:Btrfs

    • 优势:UrBackup能与Btrfs深度集成,利用其快照功能实现"秒级"创建完整备份的视图,极大减少I/O和存储占用。增量文件备份可以使用btrfs send/receive实现块级增量,效率极高。
    • 配置:在Btrfs卷上创建备份目录,UrBackup会自动识别并启用相关优化。
  • 优秀备选:ZFS

    • 优势:以其卓越的数据完整性(端到端校验)、强大的压缩和快照功能而闻名。虽然UrBackup与其集成不如Btrfs紧密,但ZFS自身的能力足以提供高效可靠的备份存储。
    • 配置:在ZFS文件系统上启用压缩(如lz4)和dedup(如果内存充足)。
  • 一般选择:Ext4/XFS/NTFS

    • 局限:这些传统文件系统不支持CoW快照。UrBackup将依赖硬链接来节省空间,但在处理大量小文件和元数据时,性能开销和空间浪费会比Btrfs/ZFS大得多。
    • 建议:如果条件所限只能使用这些文件系统,请确保为备份卷预留充足的I/O性能和空间。在Windows上使用NTFS时,开启系统级压缩是一个不错的补充。

性能调优参数

在UrBackup的"设置" -> "高级"中,可以调整以下参数:

  • 最大并发备份数 (Max number of simultaneous backups):根据服务器CPU核心数和磁盘I/O能力调整。เริ่มต้นที่一个适中的值(如CPU核心数的一半),然后根据负载情况增减。
  • 传输模式 (Transfer modes):对于文件备份,可以尝试不同的传输模式以适应网络状况。
  • 启用临时文件缓冲区 (Enabling temporary file buffers):如果服务器内存充足,启用此项可以缓冲写入,平滑磁盘I/O,提升小文件备份性能。

安全加固指南

安全是备份系统的生命线。请务必遵循以下建议:

1. 强化Web界面访问

UrBackup的Web界面默认以HTTP方式运行,这在内网中或许可以接受,但绝不应暴露在公网上。

推荐方案:使用Nginx/Apache作为反向代理并启用HTTPS

以下是一个Nginx的配置示例,它将HTTPS请求代理到UrBackup的FastCGI端口:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name urbackup.yourdomain.com; # 替换为你的域名

    # SSL 证书配置
    ssl_certificate /path/to/your/fullchain.pem;
    ssl_certificate_key /path/to/your/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    
    location / {
        # FastCGI 代理配置
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:55413; # 指向UrBackup FastCGI端口
        fastcgi_param SCRIPT_FILENAME $document_root/x; # UrBackup需要
    }

    # 静态文件处理
    location ~* \.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
        root /usr/share/urbackup/www; # UrBackup的www目录
    }
}

2. 客户端与服务器安全

  • 切勿泄露server_ident.key:这是服务器的唯一身份凭证,一旦泄露,攻击者可能伪造服务器窃取备份数据。
  • 互联网模式密钥:为每个互联网客户端生成唯一的强认证密钥,并妥善保管。
  • 物理安全:确保备份服务器和存储介质的物理安全,防止被盗或物理损坏。

3. 定期审计与更新

  • 用户权限审计:在UrBackup中为不同职责的管理员创建不同权限的账户,避免使用单一的admin账户。
  • 软件更新:及时关注官方发布的版本更新,特别是安全补丁,并尽快更新服务器和客户端。

高级功能进阶

互联网备份

  1. 配置服务器

    • 设置公网IP和端口(默认55415)
    • 配置防火墙端口转发
  2. 添加互联网客户端

    • 状态页面 → 添加互联网客户端
    • 生成认证密钥
    • 下载预配置安装程序

备份前后脚本

客户端脚本位置

  • Linux: /etc/urbackup/
  • Windows: C:\Program Files\UrBackup\

可用脚本

  • prefilebackup: 文件备份前执行
  • postfilebackup: 文件备份后执行
  • preimagebackup: 映像备份前执行
  • postimagebackup: 映像备份后执行

应用示例

  1. 数据库备份脚本
#!/bin/bash
# /etc/urbackup/prefilebackup

# MySQL 数据库备份
mysqldump -u backup_user -p'password' --all-databases > /tmp/mysql_backup.sql

# PostgreSQL 数据库备份
pg_dumpall -U postgres > /tmp/postgres_backup.sql

# 停止应用服务以确保数据一致性
systemctl stop myapp
  1. 应用服务恢复脚本
#!/bin/bash
# /etc/urbackup/postfilebackup

# 重新启动应用服务
systemctl start myapp

# 发送备份完成通知
curl -X POST -H 'Content-type: application/json' \
  --data '{"text":"UrBackup completed for '$HOSTNAME'"}' \
  https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK

成本效益分析(TCO)

UrBackup vs 商业解决方案成本对比

5年总体拥有成本(TCO)对比(50台设备环境):

成本项目 UrBackup Veeam Backup & Replication Acronis Cyber Backup
软件许可 ¥0 ¥45,000/年 ¥35,000/年
硬件成本 ¥30,000 ¥80,000(高性能要求) ¥60,000
实施成本 ¥8,000 ¥25,000 ¥20,000
年维护费 ¥2,000 ¥15,000 ¥12,000
培训成本 ¥3,000 ¥10,000 ¥8,000
5年总成本 ¥51,000 ¥370,000 ¥283,000
成本节省 基准 节省86% 节省82%

ROI计算模型

数据丢失成本评估

单次数据丢失成本 = 恢复时间 × 人员成本 + 业务中断损失 + 声誉损失

中小企业典型场景:
- 恢复时间:24-72小时
- 人员成本:¥500/小时 × 3人 × 48小时 = ¥72,000
- 业务中断:¥10,000/小时 × 48小时 = ¥480,000
- 声誉损失:¥100,000

单次数据丢失总成本:¥652,000

UrBackup投资回报

ROI = (避免损失 - 投资成本) / 投资成本 × 100%
ROI = (¥652,000 - ¥51,000) / ¥51,000 × 100% = 1178%

投资回收期:仅需避免一次重大数据丢失事故即可回收全部投资

备份验证与灾难恢复演练

自动化备份验证流程

1. 文件完整性验证

#!/bin/bash
# 每周执行的验证脚本

# 从最新备份中随机选择文件进行哈希验证
BACKUP_PATH="/backups/clients/$(hostname)/$(date +%Y%m%d)"
TEMP_DIR="/tmp/backup_verify"

# 随机选择100个文件进行验证
find "$BACKUP_PATH" -type f | shuf -n 100 > /tmp/verify_files.list

while read -r file; do
    original_hash=$(sha256sum "$file" | cut -d' ' -f1)
    # 从原始位置计算哈希
    original_file=${file#$BACKUP_PATH}
    if [[ -f "$original_file" ]]; then
        current_hash=$(sha256sum "$original_file" | cut -d' ' -f1)
        if [[ "$original_hash" != "$current_hash" ]]; then
            echo "FAIL: $file hash mismatch" | tee -a /var/log/backup_verify.log
        fi
    fi
done < /tmp/verify_files.list

2. 映像恢复测试

#!/bin/bash
# 季度映像恢复测试

# 在虚拟环境中恢复最新的映像备份
VHD_FILE="/backups/clients/test-client/Image_C_*.vhd"
TEST_VM="urbackup-test-vm"

# 创建测试虚拟机并挂载VHD
vboxmanage createvm --name "$TEST_VM" --register
vboxmanage storagectl "$TEST_VM" --name "SATA" --add sata
vboxmanage storageattach "$TEST_VM" --storagectl "SATA" --port 0 \
  --device 0 --type hdd --medium "$VHD_FILE"

# 启动虚拟机进行恢复测试
vboxmanage startvm "$TEST_VM" --type headless

# 检查系统启动状态
sleep 300
if vboxmanage list runningvms | grep -q "$TEST_VM"; then
    echo "SUCCESS: Image restore test passed"
else
    echo "FAIL: Image restore test failed"
fi

# 清理测试环境
vboxmanage controlvm "$TEST_VM" poweroff
vboxmanage unregistervm "$TEST_VM" --delete

灾难恢复演练计划

季度演练检查清单

  1. 准备阶段

    • 确认演练时间窗口(非业务高峰期)
    • 准备测试硬件或虚拟环境
    • 通知相关团队成员
    • 准备恢复时间测量工具
  2. 执行阶段

    • 模拟服务器硬件故障
    • 从映像备份恢复系统(记录耗时)
    • 验证系统功能完整性
    • 从文件备份恢复关键数据(记录耗时)
    • 测试应用程序功能
  3. 评估阶段

    • 记录实际恢复时间 vs 目标RTO
    • 评估数据完整性和一致性
    • 识别流程改进点
    • 更新恢复程序文档
    • 制定改进行动计划

关键指标基准

  • RTO目标:文件恢复 < 2小时,系统恢复 < 4小时
  • RPO目标:数据丢失 < 1小时
  • 成功率要求:> 95%

高级配置与企业级特性

高可用性部署架构

主-备模式配置

# 主服务器配置
# /etc/urbackup/backupserver.db.conf
backup_database_server_url=mysql://urbackup:password@mysql-primary:3306/urbackup

# 备份服务器配置  
# /etc/urbackup/backupserver.db.conf
backup_database_server_url=mysql://urbackup:password@mysql-secondary:3306/urbackup
backup_storage_path=/shared-storage/urbackup

负载均衡配置(使用HAProxy):

# /etc/haproxy/haproxy.cfg
global
    daemon

defaults
    mode tcp
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend urbackup_frontend
    bind *:55414
    default_backend urbackup_servers

backend urbackup_servers
    balance roundrobin
    server urbackup1 192.168.1.10:55414 check
    server urbackup2 192.168.1.11:55414 check backup

API集成与自动化

RESTful API调用示例

#!/usr/bin/env python3
# UrBackup API客户端示例

import requests
import json
from datetime import datetime

class UrBackupAPI:
    def __init__(self, server_url, username, password):
        self.server_url = server_url
        self.session = requests.Session()
        self.login(username, password)
    
    def login(self, username, password):
        """登录并获取会话"""
        login_data = {
            'username': username,
            'password': password
        }
        response = self.session.post(
            f"{self.server_url}/x?a=login", 
            data=login_data
        )
        return response.status_code == 200
    
    def get_backup_status(self):
        """获取所有客户端备份状态"""
        response = self.session.get(f"{self.server_url}/x?a=status")
        return response.json()
    
    def start_backup(self, client_name, backup_type='file'):
        """手动启动备份"""
        backup_data = {
            'name': client_name,
            'backup_type': backup_type
        }
        response = self.session.post(
            f"{self.server_url}/x?a=start_backup", 
            data=backup_data
        )
        return response.json()
    
    def generate_report(self):
        """生成备份状态报告"""
        status = self.get_backup_status()
        
        report = {
            'timestamp': datetime.now().isoformat(),
            'total_clients': len(status.get('clients', [])),
            'successful_backups': 0,
            'failed_backups': 0,
            'clients_detail': []
        }
        
        for client in status.get('clients', []):
            client_info = {
                'name': client['name'],
                'last_backup': client.get('lastbackup'),
                'status': client.get('status'),
                'file_backup_ok': client.get('file_ok'),
                'image_backup_ok': client.get('image_ok')
            }
            report['clients_detail'].append(client_info)
            
            if client.get('status') == 'ok':
                report['successful_backups'] += 1
            else:
                report['failed_backups'] += 1
        
        return report

# 使用示例
if __name__ == "__main__":
    api = UrBackupAPI("http://192.168.1.10:55414", "admin", "password")
    
    # 生成日报
    daily_report = api.generate_report()
    
    # 发送到Slack或邮件
    print(json.dumps(daily_report, indent=2, ensure_ascii=False))

监控集成方案

Prometheus监控指标导出器

#!/usr/bin/env python3
# urbackup_exporter.py - Prometheus metrics exporter

from prometheus_client import start_http_server, Gauge, Counter
import time
import requests
import json

# 定义指标
backup_status = Gauge('urbackup_client_status', 'Client backup status', ['client_name'])
backup_size = Gauge('urbackup_backup_size_bytes', 'Backup size in bytes', ['client_name'])
backup_duration = Gauge('urbackup_backup_duration_seconds', 'Backup duration', ['client_name'])
backup_files_count = Gauge('urbackup_files_count', 'Number of files backed up', ['client_name'])

class UrBackupExporter:
    def __init__(self, urbackup_url, username, password):
        self.api = UrBackupAPI(urbackup_url, username, password)
    
    def collect_metrics(self):
        """收集并更新指标"""
        status = self.api.get_backup_status()
        
        for client in status.get('clients', []):
            client_name = client['name']
            
            # 备份状态 (1=成功, 0=失败)
            status_value = 1 if client.get('status') == 'ok' else 0
            backup_status.labels(client_name=client_name).set(status_value)
            
            # 备份大小
            if 'backup_size' in client:
                backup_size.labels(client_name=client_name).set(client['backup_size'])
            
            # 备份持续时间
            if 'backup_duration' in client:
                backup_duration.labels(client_name=client_name).set(client['backup_duration'])
            
            # 文件数量
            if 'files_count' in client:
                backup_files_count.labels(client_name=client_name).set(client['files_count'])

if __name__ == '__main__':
    # 启动Prometheus metrics server
    start_http_server(8000)
    
    exporter = UrBackupExporter("http://localhost:55414", "admin", "password")
    
    while True:
        exporter.collect_metrics()
        time.sleep(60)  # 每分钟更新一次指标

与第三方系统集成

与LDAP/Active Directory集成

# 配置 LDAP 认证
# /etc/urbackup/ldap.conf

# LDAP服务器配置
ldap_server_url=ldap://dc.company.com:389
ldap_bind_dn=CN=urbackup-service,OU=Service Accounts,DC=company,DC=com
ldap_bind_password=SecurePassword123

# 用户搜索配置
ldap_user_base_dn=OU=Users,DC=company,DC=com
ldap_user_search_filter=(&(objectClass=user)(sAMAccountName=%s))
ldap_user_scope=subtree

# 组搜索配置
ldap_group_base_dn=OU=Groups,DC=company,DC=com
ldap_group_search_filter=(&(objectClass=group)(member=%s))
ldap_admin_group=CN=UrBackup Admins,OU=Groups,DC=company,DC=com

维护、监控与故障排除

常见问题深度解析

1. 客户端无法连接服务器

症状:客户端显示"无法连接到服务器"或长时间处于"正在连接"状态。

深度诊断流程

# 第一步:验证网络连通性
ping [服务器IP]
telnet [服务器IP] 55414

# 第二步:检查服务器端口监听状态
netstat -tlnp | grep -E "(55413|55414|55415)"
ss -tlnp | grep urbackup

# 第三步:检查防火墙规则
# Linux (ufw)
sudo ufw status verbose
# Linux (iptables)
iptables -L -n | grep -E "(55413|55414|55415)"
# Windows
netsh advfirewall firewall show rule name=all | findstr urbackup

# 第四步:验证服务状态
systemctl status urbackupsrv  # Linux
sc query urbackupsrv          # Windows

# 第五步:检查客户端发现机制
# 在客户端执行
nmap -sU -p 35622 [服务器IP]  # 检查UDP发现端口

解决方案

  • 网络问题:配置路由规则,检查交换机VLAN设置
  • 防火墙阻挡:添加例外规则或临时禁用防火墙测试
  • 服务未启动:重启UrBackup服务并检查系统日志
  • 端口冲突:检查是否有其他应用占用相同端口

2. 备份速度异常缓慢

症状:备份速度远低于预期,网络利用率不足。

性能分析工具

# 网络性能测试
iperf3 -s  # 服务器端
iperf3 -c [服务器IP] -t 60  # 客户端

# 磁盘I/O性能测试
fio --name=random-write --ioengine=posixaio --rw=randwrite \
    --bs=4k --numjobs=1 --size=4g --iodepth=1 \
    --runtime=60 --time_based --filename=/backup/test

# 实时监控备份进程
iostat -x 1  # 磁盘I/O
iftop        # 网络流量
htop         # 系统资源

优化策略

# 调整TCP缓冲区大小
echo 'net.core.rmem_max = 134217728' >> /etc/sysctl.conf
echo 'net.core.wmem_max = 134217728' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_rmem = 4096 87380 134217728' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_wmem = 4096 65536 134217728' >> /etc/sysctl.conf

# 调整UrBackup服务器并发参数
# Web界面 -> 设置 -> 高级
max_simultaneous_backups=4  # 根据CPU核心数调整
max_file_incr=10           # 增加并发文件传输数

3. 存储空间管理问题

智能空间清理策略

#!/bin/bash
# 高级清理脚本

BACKUP_ROOT="/backups"
THRESHOLD=85  # 存储使用率阈值

# 检查磁盘使用率
USAGE=$(df "$BACKUP_ROOT" | tail -1 | awk '{print $5}' | sed 's/%//')

if [ "$USAGE" -gt "$THRESHOLD" ]; then
    echo "Storage usage: ${USAGE}% - Starting cleanup..."
    
    # 清理最旧的增量备份(保留最新3个完整备份)
    find "$BACKUP_ROOT" -name "*-incremental" -type d -mtime +7 -exec rm -rf {} \;
    
    # 清理失败的备份
    find "$BACKUP_ROOT" -name "*.incomplete" -type d -exec rm -rf {} \;
    
    # 清理临时文件
    find "$BACKUP_ROOT" -name "*.tmp" -mtime +1 -delete
    
    # 强制运行数据库清理
    sqlite3 /var/urbackup/backup_server.db "VACUUM; REINDEX;"
    
    echo "Cleanup completed. New usage: $(df "$BACKUP_ROOT" | tail -1 | awk '{print $5}')"
fi

4. 映像备份失败或损坏

映像备份完整性验证

#!/bin/bash
# VHD文件完整性检查

VHD_FILE="/backups/clients/hostname/Image_C_YYYYMMDD-HHMM.vhd"

# 检查VHD文件头信息
hexdump -C "$VHD_FILE" | head -n 20

# 使用qemu-img验证映像
qemu-img check "$VHD_FILE"

# 挂载VHD进行内容验证(Linux)
mkdir -p /mnt/vhd_check
sudo modprobe nbd max_part=8
sudo qemu-nbd --connect=/dev/nbd0 "$VHD_FILE"
sudo mount /dev/nbd0p1 /mnt/vhd_check
ls -la /mnt/vhd_check  # 检查文件系统

# 清理
sudo umount /mnt/vhd_check
sudo qemu-nbd --disconnect /dev/nbd0

5. 数据库锁定和性能问题

SQLite数据库优化

-- 手动数据库维护
.timer on
PRAGMA integrity_check;
PRAGMA foreign_key_check;
VACUUM;
REINDEX;

-- 检查数据库统计信息
SELECT name, tbl_name, sql FROM sqlite_master WHERE type='table';
SELECT COUNT(*) as total_clients FROM settings_db.si_clients;
SELECT COUNT(*) as total_backups FROM backups;

-- 清理过期记录
DELETE FROM del_file WHERE created < datetime('now', '-30 days');
DELETE FROM logs WHERE created < datetime('now', '-7 days');

升级与迁移指南

版本升级步骤

从UrBackup 2.4.x升级到2.5.x

  1. 备份现有配置
# 停止服务
sudo systemctl stop urbackupsrv

# 备份数据库和配置
cp -r /var/urbackup /var/urbackup.backup.$(date +%Y%m%d)
cp -r /etc/urbackup /etc/urbackup.backup.$(date +%Y%m%d)

# 导出客户端配置
sqlite3 /var/urbackup/backup_server.db ".dump settings_db.si_clients" > clients_backup.sql
  1. 执行升级
# Ubuntu/Debian
sudo apt update && sudo apt upgrade urbackup-server

# CentOS/RHEL
sudo yum update urbackup-server

# 手动安装
wget https://hndl.urbackup.org/Server/2.5.33/urbackup-server-2.5.33.tar.gz
tar xzf urbackup-server-2.5.33.tar.gz
cd urbackup-server-2.5.33
make install
  1. 验证升级
# 启动服务
sudo systemctl start urbackupsrv

# 检查版本
curl -s http://localhost:55414/x?a=status | grep -o '"version":"[^"]*"'

# 验证客户端连接
tail -f /var/log/urbackup/urbackup.log

服务器迁移方案

完整迁移到新硬件

  1. 源服务器数据导出
#!/bin/bash
# 完整迁移脚本

BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
EXPORT_DIR="/tmp/urbackup_migration_$BACKUP_DATE"

# 创建导出目录
mkdir -p "$EXPORT_DIR"

# 停止服务
systemctl stop urbackupsrv

# 导出数据库
sqlite3 /var/urbackup/backup_server.db ".backup $EXPORT_DIR/backup_server.db"

# 复制配置文件
cp -r /etc/urbackup "$EXPORT_DIR/"

# 导出客户端密钥
cp /var/urbackup/server_ident.key "$EXPORT_DIR/"

# 创建备份数据清单
find /backups -type f -name "*.ub" -o -name "*.vhd" > "$EXPORT_DIR/backup_files.list"

# 压缩配置和数据库
tar czf "urbackup_config_$BACKUP_DATE.tar.gz" -C "$EXPORT_DIR" .

echo "Migration package created: urbackup_config_$BACKUP_DATE.tar.gz"
echo "Copy backup data from /backups to new server manually"
  1. 目标服务器导入
#!/bin/bash
# 目标服务器导入脚本

MIGRATION_PACKAGE="urbackup_config_YYYYMMDD_HHMMSS.tar.gz"

# 安装UrBackup服务器
sudo apt install urbackup-server

# 停止服务
sudo systemctl stop urbackupsrv

# 解压配置
TEMP_DIR=$(mktemp -d)
tar xzf "$MIGRATION_PACKAGE" -C "$TEMP_DIR"

# 恢复配置
cp -r "$TEMP_DIR/urbackup" /etc/
cp "$TEMP_DIR/backup_server.db" /var/urbackup/
cp "$TEMP_DIR/server_ident.key" /var/urbackup/

# 设置权限
chown -R urbackup:urbackup /var/urbackup
chmod 600 /var/urbackup/server_ident.key

# 启动服务
sudo systemctl start urbackupsrv
sudo systemctl enable urbackupsrv

echo "Migration completed. Verify client connections."

客户端批量部署

企业环境自动化部署

# Windows环境批量部署脚本 (PowerShell)
# deploy_urbackup_clients.ps1

param(
    [Parameter(Mandatory=$true)]
    [string[]]$ComputerNames,
    
    [Parameter(Mandatory=$true)]
    [string]$ServerURL,
    
    [string]$InstallerPath = "\\fileserver\software\UrBackupClient.msi"
)

foreach ($Computer in $ComputerNames) {
    Write-Host "Deploying to $Computer..."
    
    # 复制安装程序
    $RemotePath = "\\$Computer\C$\Temp\UrBackupClient.msi"
    Copy-Item $InstallerPath $RemotePath -Force
    
    # 远程安装
    $ScriptBlock = {
        param($ServerURL)
        
        # 静默安装
        Start-Process msiexec.exe -ArgumentList "/i C:\Temp\UrBackupClient.msi /quiet SERVER_URL=$ServerURL" -Wait
        
        # 启动服务
        Start-Service "UrBackup Client Backend"
        
        # 清理安装文件
        Remove-Item "C:\Temp\UrBackupClient.msi" -Force
    }
    
    Invoke-Command -ComputerName $Computer -ScriptBlock $ScriptBlock -ArgumentList $ServerURL
    
    Write-Host "$Computer deployment completed."
}
# Linux环境批量部署脚本
#!/bin/bash
# deploy_urbackup_linux.sh

SERVERS_FILE="servers.txt"  # 每行一个IP地址
SERVER_URL="http://192.168.1.10:55414"

while read -r server_ip; do
    echo "Deploying to $server_ip..."
    
    ssh root@"$server_ip" << EOF
        # 下载并安装客户端
        TF=\$(mktemp) && wget "https://hndl.urbackup.org/Client/2.5.25/UrBackup%20Client%20Linux%202.5.25.sh" -O \$TF
        sh \$TF --server-url="$SERVER_URL" --no-gui
        rm -f \$TF
        
        # 启动服务
        systemctl enable urbackupclientbackend
        systemctl start urbackupclientbackend
        
        echo "Client deployed on \$(hostname)"
EOF
    
done < "$SERVERS_FILE"

日志查看

服务器日志位置

  • Linux: /var/log/urbackup/
  • Windows: C:\Program Files\UrBackupServer\urbackup\

客户端日志位置

  • Linux: /var/urbackup/
  • Windows: C:\Program Files\UrBackup\

维护和监控

定期维护任务

  1. 检查备份状态

    • 监控失败的备份
    • 验证备份完整性
    • 检查存储空间使用
  2. 数据库维护

    • 定期备份UrBackup数据库
    • 监控数据库大小
    • 清理过期日志
  3. 系统更新

    • 定期更新服务器和客户端
    • 检查安全补丁
    • 测试恢复流程

性能监控

关键指标

  • 备份成功率
  • 备份传输速度
  • 存储使用效率
  • 系统资源占用

最佳实践

  1. 规划备份策略

    • 根据数据重要性设置不同备份频率
    • 合理配置保留策略
    • 定期测试恢复流程
  2. 安全配置

    • 启用HTTPS访问Web界面
    • 定期更改管理员密码
    • 限制网络访问权限
  3. 性能优化

    • 使用专用备份网络
    • 配置适当的备份时间窗口
    • 启用压缩和去重功能
  4. 监控告警

    • 配置邮件通知
    • 监控存储使用情况
    • 设置备份失败告警

社区、生态与贡献

UrBackup拥有一个活跃的开发和用户社区。当你遇到问题或有新想法时:

  • 官方论坛forums.urbackup.org 是获取帮助、交流经验和报告问题的首选之地。
  • 官方文档urbackup.org/documentation.html 提供了最权威的管理手册。
  • GitHub仓库:你可以在GitHub上查看源代码,提交Issue,甚至通过Pull Request贡献自己的代码。
  • 第三方集成:社区贡献了许多集成脚本和插件,例如与Nagios/Icinga等监控系统的集成,扩展了UrBackup的应用边界。

成为社区的一员,不仅能解决你的问题,你的反馈和贡献也能让这个优秀的项目变得更好。

总结

UrBackup 是一个功能强大、易于使用的开源备份解决方案,适合个人用户和企业环境。通过合理的配置和维护,可以为您的数据提供可靠的保护。其开源特性确保了长期可用性和可定制性,是值得信赖的备份选择。

关键优势总结

  • 零成本:完全免费,无许可费用限制
  • 易部署:自动发现,简化管理
  • 高效率:智能去重,节省存储空间
  • 双保险:文件+映像备份,全面保护
  • 跨平台:支持主流操作系统
  • 高性能:C++核心,传输效率优异
  • 低维护:Web界面管理,运维简单

对于预算有限但对数据保护有严格要求的中小企业而言,UrBackup 提供了一个既专业又经济的完整解决方案。它不仅能满足日常的数据保护需求,更能在关键时刻成为企业数据安全的最后一道防线。

附录

附录A:常用端口和服务列表

端口 协议 用途 说明
55413 TCP FastCGI Web界面后端接口
55414 TCP HTTP Web管理界面
55415 TCP HTTPS 安全Web界面(需配置)
35621 TCP 文件传输 客户端文件服务器
35622 UDP 发现服务 客户端自动发现
35623 TCP 命令通道 客户端控制连接

附录B:重要文件和目录位置

Linux系统

配置文件:
/etc/urbackup/backupserver.conf      # 服务器主配置
/etc/urbackup/urbackup_srv.conf     # 服务启动配置
/etc/urbackup/urbackup.conf         # 客户端配置

数据库和运行时:
/var/urbackup/backup_server.db      # 主数据库
/var/urbackup/server_ident.key      # 服务器密钥
/var/urbackup/urbackup.log          # 主日志文件

备份存储:
/backups/clients/                    # 默认备份存储路径
/backups/urbackup_tmp/              # 临时文件目录

Windows系统

配置文件:
C:\Program Files\UrBackupServer\urbackup\
C:\Program Files\UrBackup\           # 客户端安装目录

数据库和运行时:
C:\Program Files\UrBackupServer\urbackup\backup_server.db
C:\Program Files\UrBackupServer\urbackup\server_ident.key

备份存储:
C:\Backups\                          # 默认备份路径

附录C:性能调优参数参考

服务器端配置优化 (/etc/urbackup/backupserver.conf):

# 并发控制
max_simultaneous_backups=4
max_file_incr=10
max_image_incr=2

# 网络优化
internet_speed_limit_mb=100
local_speed_limit_mb=0

# 存储优化
use_tmpfiles=true
use_tmpfiles_images=false
tmpdir=/tmp

# 数据库优化
sqlite_wal_mode=1
sqlite_cache_size=10000

# 清理策略
cleanup_time=3:00
max_cleanup_time_per_client=3600

客户端配置优化 (/etc/urbackup/urbackup.conf):

# 传输优化
file_buffer_size=524288
image_buffer_size=2097152

# 压缩设置
compress_level=6
compress_minimum_size=4096

# 排除规则优化
exclude_files=*.tmp;*.log;*.cache;*/Temp/*;*/temp/*;*/.git/*

附录D:监控脚本模板

基础健康检查脚本

#!/bin/bash
# urbackup_health_check.sh

# 配置参数
SERVER_URL="http://localhost:55414"
ALERT_EMAIL="admin@company.com"
LOG_FILE="/var/log/urbackup_health.log"

# 检查服务状态
check_service() {
    if ! systemctl is-active --quiet urbackupsrv; then
        echo "$(date): ERROR - UrBackup service is not running" | tee -a "$LOG_FILE"
        return 1
    fi
    return 0
}

# 检查磁盘空间
check_disk_space() {
    local backup_path="/backups"
    local threshold=90
    
    local usage=$(df "$backup_path" | tail -1 | awk '{print $5}' | sed 's/%//')
    
    if [ "$usage" -gt "$threshold" ]; then
        echo "$(date): WARNING - Disk usage is ${usage}% (threshold: ${threshold}%)" | tee -a "$LOG_FILE"
        return 1
    fi
    return 0
}

# 检查备份状态
check_backup_status() {
    local failed_clients=$(curl -s "$SERVER_URL/x?a=status" | jq '.clients[] | select(.status != "ok") | .name' | wc -l)
    
    if [ "$failed_clients" -gt 0 ]; then
        echo "$(date): WARNING - $failed_clients clients have backup issues" | tee -a "$LOG_FILE"
        return 1
    fi
    return 0
}

# 主检查逻辑
main() {
    local exit_code=0
    
    echo "$(date): Starting UrBackup health check..." | tee -a "$LOG_FILE"
    
    check_service || exit_code=1
    check_disk_space || exit_code=1
    check_backup_status || exit_code=1
    
    if [ $exit_code -eq 0 ]; then
        echo "$(date): All checks passed successfully" | tee -a "$LOG_FILE"
    else
        echo "$(date): Health check completed with warnings/errors" | tee -a "$LOG_FILE"
        # 发送告警邮件(需要配置邮件系统)
        # mail -s "UrBackup Health Check Alert" "$ALERT_EMAIL" < "$LOG_FILE"
    fi
    
    return $exit_code
}

# 执行主函数
main "$@"

附录E:故障诊断检查清单

客户端连接问题排查清单

  • 网络连通性

    • 可以ping通服务器IP
    • 可以telnet到55414端口
    • 防火墙规则正确配置
    • 网络路由表正常
  • 服务状态检查

    • UrBackup服务器服务正在运行
    • UrBackup客户端服务正在运行
    • 端口正确监听(netstat/ss验证)
    • 没有端口冲突
  • 配置验证

    • 客户端服务器地址配置正确
    • 客户端名称没有冲突
    • 认证密钥正确(如果使用)
    • 客户端发现机制正常工作
  • 日志分析

    • 检查服务器日志错误信息
    • 检查客户端日志错误信息
    • 分析网络连接错误
    • 查看认证失败记录

附录F:备份策略模板

标准中小企业备份策略模板

# 备份策略配置模板
backup_policies:
  workstations:
    file_backup:
      incremental_interval: 6h      # 6小时增量备份
      full_interval: 7d            # 7天完整备份
      retention:
        incremental: 30            # 保留30个增量
        full: 4                    # 保留4个完整备份
      include_paths:
        - "C:/Users/"              # 用户目录
        - "D:/Documents/"          # 文档目录
      exclude_patterns:
        - "*.tmp"
        - "*/AppData/Local/Temp/*"
        - "*/Cache/*"
    
    image_backup:
      incremental_interval: 1d     # 1天增量映像
      full_interval: 30d          # 30天完整映像
      retention:
        incremental: 7             # 保留7个增量
        full: 2                    # 保留2个完整映像

  servers:
    file_backup:
      incremental_interval: 2h     # 2小时增量备份
      full_interval: 3d           # 3天完整备份
      retention:
        incremental: 72            # 保留72个增量
        full: 10                   # 保留10个完整备份
      pre_backup_script: "/scripts/prepare_server_backup.sh"
      post_backup_script: "/scripts/cleanup_server_backup.sh"
    
    image_backup:
      incremental_interval: 12h    # 12小时增量映像
      full_interval: 14d          # 14天完整映像
      retention:
        incremental: 14            # 保留14个增量
        full: 3                    # 保留3个完整映像

官方资源

  • 官方网站:https://www.urbackup.org/
  • 文档:https://www.urbackup.org/documentation.html
  • GitHub:https://github.com/uroni/urbackup_backend
  • 论坛:https://forums.urbackup.org/

延伸阅读

信息图

图片太大,这里放不下,请关注微信公众号:大刘讲IT 查阅

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐