跳转到内容

VPS 数据备份与恢复完整指南 2026

VPS 数据备份与恢复

💡 重要提醒: 没有备份策略的服务器就是在裸奔。硬盘故障、误操作、黑客入侵,任何一项都可能让几个月甚至几年的工作成果瞬间消失。备份是你唯一的保险。

本文将带你从最简单的 rsync 开始,一直到企业级的 BorgBackup 增量备份方案,覆盖:

  • ✅ 文件级增量备份
  • ✅ 数据库完整备份
  • ✅ Docker 数据卷备份
  • ✅ 系统级快照还原
  • ✅ 自动化定时任务
  • ✅ 异地容灾方案

一、备份策略的 3-2-1 原则

在开始之前,先记住业界公认的黄金备份原则

要素含义说明
3 份副本原始数据 + 2 份备份不要把鸡蛋放在同一个篮子
2 种介质本地 + 异地 + 云端硬盘、对象存储、另一台服务器
1 份离线至少 1 份离线保存防止勒索软件一锅端

实战建议:

VPS 服务器
  ↓ (每日 rsync 增量)
NAS / 外部硬盘 (本地备份)
  ↓ (每周 BorgBackup 加密)
对象存储 (S3 / OSS / Backblaze) (异地备份)
  ↓ (每月一次)
冷存储 / 离线硬盘 (离线备份)

二、基础工具:rsync 入门

2.1 什么是 rsync?

rsync 是 Linux 世界最经典的文件同步工具,特点:

  • 增量同步:只传输变化的部分
  • 支持压缩:传输时自动压缩
  • 保留权限:完整保留文件权限、时间戳
  • 支持远程:通过 SSH 同步到远程服务器
  • 断点续传:中断后可继续

2.2 基础语法

bash
# 基本格式
rsync [选项] 源 目标

# 本地备份
rsync -av /home/user/data/ /mnt/backup/user-data/

# 远程备份(推送到远端)
rsync -av /home/user/data/ user@backup-server:/mnt/backup/

# 远程备份(从远端拉取)
rsync -av user@source-server:/home/data/ /local/backup/

2.3 常用参数详解

参数含义典型使用场景
-a归档模式,保留所有属性几乎所有备份场景
-v详细输出,显示传输过程调试、日常使用
-z传输时压缩数据网络带宽有限时
-h人类可读的数字格式配合 -v
--delete删除目标中已不存在于源的文件做镜像同步时用
--dry-run仅测试,不实际传输执行前先测试
--progress显示传输进度大文件传输时
--exclude排除指定文件/目录排除缓存、临时文件

2.4 实用示例

bash
# 完整备份 home 目录到外部硬盘
rsync -avh --progress \
  --exclude='node_modules' \
  --exclude='.cache' \
  --exclude='*.log' \
  /home/your-user/ \
  /mnt/external-drive/backup/home/

# 测试运行(只显示将要做什么)
rsync -avh --dry-run --progress /source/ /destination/

# 远程备份到备份服务器(通过 SSH)
rsync -avzh \
  -e 'ssh -p 22' \
  --exclude='node_modules' \
  /var/www/ \
  backupuser@192.168.1.100:/mnt/backup/www/

2.5 备份脚本(入门级)

bash
#!/bin/bash
# 文件名: backup-daily.sh
# 作用: 每日增量备份重要目录

# ===== 配置 =====
SOURCE_DIRS="/home /etc /var/www /var/log"
DEST_DIR="/mnt/backup/daily"
DATE=$(date +%Y-%m-%d)
LOG_FILE="/var/log/backup-$DATE.log"

# ===== 执行备份 =====
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 开始备份..." >> $LOG_FILE

for dir in $SOURCE_DIRS; do
    echo "正在备份: $dir" >> $LOG_FILE
    rsync -avh \
        --exclude='node_modules' \
        --exclude='.git' \
        --exclude='*.log' \
        $dir \
        $DEST_DIR/ >> $LOG_FILE 2>&1
done

echo "[$(date +'%Y-%m-%d %H:%M:%S')] 备份完成" >> $LOG_FILE

保存后赋权并测试:

bash
chmod +x backup-daily.sh
./backup-daily.sh

三、企业级方案:BorgBackup

3.1 为什么选择 BorgBackup?

特性rsyncBorgBackup
增量备份✅ 简单增量✅ 去重增量(仅存变更块)
压缩✅ 传输时✅ 存储时 + 传输时
加密❌(依赖 SSH)✅ AES-256 端到端加密
去重✅ 跨备份全局去重
快照✅ 自动创建时间点快照
恢复点单个最新版本多个历史版本

3.2 安装 BorgBackup

bash
# Debian / Ubuntu
sudo apt update && sudo apt install -y borgbackup

# CentOS / RHEL
sudo dnf install -y epel-release
sudo dnf install -y borgbackup

# 验证安装
borg --version

3.3 初始化备份仓库

bash
# 初始化本地仓库(会提示设置密码)
borg init --encryption=repokey /mnt/backup/my-borg-repo

# 初始化远程仓库
borg init --encryption=repokey ssh://backupuser@192.168.1.100:/mnt/backup/my-repo

# 无密码(仅本地测试用)
borg init --encryption=none /mnt/backup/test-repo

加密方式选择:

方式适用场景特点
repokey推荐密钥存在仓库中,用密码保护
keyfile极高安全需求密钥存在本地 ~/.config/borg/
authenticated只防篡改不加密可信任存储环境
none仅测试无任何安全措施

3.4 创建备份

bash
# 创建一个备份快照
borg create --stats --progress \
  /mnt/backup/my-borg-repo::$(hostname)-$(date +%Y-%m-%d-%H%M%S) \
  /home /etc /var/www /var/log

# 带排除列表的完整备份
borg create --stats --progress --compression zstd \
  --exclude 'node_modules' \
  --exclude '.git' \
  --exclude '*.log' \
  --exclude '*.pyc' \
  --exclude '/home/*/.cache' \
  /mnt/backup/my-borg-repo::server1-$(date +%Y-%m-%d) \
  /home /etc /var/www /opt

3.5 查看和管理备份

bash
# 列出所有备份
borg list /mnt/backup/my-borg-repo

# 查看某个备份的文件列表
borg list /mnt/backup/my-borg-repo::server1-2026-06-15

# 查看备份信息
borg info /mnt/backup/my-borg-repo
borg info /mnt/backup/my-borg-repo::server1-2026-06-15

# 比较两个备份的差异
borg diff /mnt/backup/my-borg-repo::server1-2026-06-14 server1-2026-06-15

3.6 恢复文件

bash
# 方法一:挂载备份(推荐)
borg mount /mnt/backup/my-borg-repo::server1-2026-06-15 /mnt/borg-mount
# 现在你可以像普通目录一样浏览和复制文件
ls /mnt/borg-mount/
cp /mnt/borg-mount/home/user/important-file.txt /home/user/

# 卸载
borg umount /mnt/borg-mount

# 方法二:直接提取文件
borg extract /mnt/backup/my-borg-repo::server1-2026-06-15 \
  home/user/important-file.txt

# 方法三:完整恢复到指定目录
cd /tmp/restore
borg extract /mnt/backup/my-borg-repo::server1-2026-06-15

3.7 删除旧备份

bash
# 删除指定备份
borg delete /mnt/backup/my-borg-repo::server1-2026-06-01

# 保留策略:保留最近 7 天每日 + 4 周 + 6 个月
borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
  /mnt/backup/my-borg-repo

# 回收空闲空间
borg compact /mnt/backup/my-borg-repo

3.8 完整的 BorgBackup 自动化脚本

bash
#!/bin/bash
# 文件名: borg-backup.sh
# 作用: BorgBackup 全自动备份脚本

# ===== 配置 =====
export BORG_REPO='/mnt/backup/my-borg-repo'
export BORG_PASSPHRASE='你的加密密码-请用强密码-随机字符串'
BACKUP_PATHS='/home /etc /var/www /opt /root'
HOSTNAME=$(hostname)
DATE=$(date +%Y-%m-%d-%H%M%S)
LOG_FILE='/var/log/borg-backup.log'

# ===== 备份前检查 =====
echo "[$(date)] 开始备份 $HOSTNAME..." >> $LOG_FILE

# 检查仓库是否可访问
if ! borg info $BORG_REPO > /dev/null 2>&1; then
    echo "[$(date)] 错误: 无法访问备份仓库 $BORG_REPO" >> $LOG_FILE
    exit 1
fi

# ===== 创建备份 =====
borg create --stats --progress --compression zstd \
    --exclude 'node_modules' \
    --exclude '.git' \
    --exclude '*.log' \
    --exclude '*.pyc' \
    --exclude '/home/*/.cache' \
    --exclude '/tmp' \
    --exclude '/var/tmp' \
    --exclude '/proc' \
    --exclude '/sys' \
    --exclude '/dev' \
    --exclude '/run' \
    --exclude '/mnt' \
    --exclude 'lost+found' \
    ::$HOSTNAME-$DATE \
    $BACKUP_PATHS >> $LOG_FILE 2>&1

# ===== 清理旧备份 =====
borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
    >> $LOG_FILE 2>&1

# ===== 回收空间 =====
borg compact >> $LOG_FILE 2>&1

# ===== 清理环境变量 =====
unset BORG_PASSPHRASE

echo "[$(date)] 备份完成" >> $LOG_FILE

重要安全提醒: 包含密码的脚本权限必须设置为 700

bash
chmod 700 borg-backup.sh
chown root:root borg-backup.sh

四、数据库备份

4.1 MySQL / MariaDB 备份

bash
# 导出所有数据库(带时间戳)
mysqldump -u root -p \
  --all-databases \
  --single-transaction \
  --quick \
  --lock-tables=false \
  | gzip > /mnt/backup/mysql/all-databases-$(date +%Y-%m-%d).sql.gz

# 导出单个数据库
mysqldump -u root -p db_name | gzip > backup/db_name-$(date +%Y-%m-%d).sql.gz

# 恢复数据库
gunzip < backup/db_name-2026-06-15.sql.gz | mysql -u root -p db_name

自动化 MySQL 备份脚本:

bash
#!/bin/bash
# mysql-backup.sh

DB_USER='backup_user'
DB_PASS='your-password'
BACKUP_DIR='/mnt/backup/mysql'
DATE=$(date +%Y-%m-%d-%H%M%S)
MAX_DAYS=30

mkdir -p $BACKUP_DIR

# 备份所有数据库
mysqldump -u $DB_USER -p$DB_PASS \
  --all-databases \
  --single-transaction \
  --quick \
  --lock-tables=false \
  | gzip > $BACKUP_DIR/all-databases-$DATE.sql.gz

# 删除 30 天前的备份
find $BACKUP_DIR -name "*.sql.gz" -type f -mtime +$MAX_DAYS -delete

4.2 PostgreSQL 备份

bash
# 备份所有数据库
pg_dumpall -U postgres | gzip > /mnt/backup/postgres/all-$(date +%Y-%m-%d).sql.gz

# 备份单个数据库
pg_dump -U postgres db_name | gzip > /mnt/backup/postgres/db_name-$(date +%Y-%m-%d).sql.gz

# 只备份结构
pg_dump -U postgres -s db_name > db-schema.sql

# 恢复
gunzip < backup.sql.gz | psql -U postgres

4.3 SQLite 备份

bash
# 方式一:使用 .backup 命令(推荐,安全且可在线备份)
sqlite3 /path/to/database.db ".backup /mnt/backup/sqlite/database-$(date +%Y-%m-%d).db"

# 方式二:直接复制文件(仅在数据库关闭时)
cp /path/to/database.db /mnt/backup/sqlite/database.db

# 验证备份完整性
sqlite3 /mnt/backup/sqlite/database.db ".tables"

4.4 MongoDB 备份

bash
# 完整备份
mongodump --uri "mongodb://localhost:27017" \
  --out /mnt/backup/mongodb-$(date +%Y-%m-%d)

# 压缩备份
mongodump --uri "mongodb://localhost:27017" --archive \
  | gzip > /mnt/backup/mongodb-$(date +%Y-%m-%d).gz

# 恢复
mongorestore /mnt/backup/mongodb-2026-06-15/
# 或从压缩包恢复
mongorestore --gzip --archive=/mnt/backup/mongodb-2026-06-15.gz

4.5 Redis 备份

bash
# 触发 BGSAVE(后台保存)
redis-cli BGSAVE

# 等待完成后复制 RDB 文件
sleep 5
cp /var/lib/redis/dump.rdb /mnt/backup/redis/dump-$(date +%Y-%m-%d).rdb

# 恢复 Redis 数据
systemctl stop redis-server
cp /mnt/backup/redis/dump-2026-06-15.rdb /var/lib/redis/dump.rdb
chown redis:redis /var/lib/redis/dump.rdb
systemctl start redis-server

五、Docker 数据卷备份

5.1 数据卷手动备份

bash
# 查看所有数据卷
docker volume ls

# 备份数据卷到 tar 文件
docker run --rm \
  -v my-data-volume:/data \
  -v /mnt/backup:/backup \
  ubuntu:24.04 \
  tar czf /backup/my-data-$(date +%Y-%m-%d).tar.gz /data

# 恢复数据卷
docker run --rm \
  -v my-data-volume:/data \
  -v /mnt/backup:/backup \
  ubuntu:24.04 \
  tar xzf /backup/my-data-2026-06-15.tar.gz -C /

5.2 使用 docker-backup 工具

bash
# 安装 docker-backup 脚本
curl -sL https://raw.githubusercontent.com/offen/docker-volume-backup/main/docker-volume-backup.sh \
  | sudo tee /usr/local/bin/docker-backup
sudo chmod +x /usr/local/bin/docker-backup

# 备份所有数据卷
docker-backup backup --all --output /mnt/backup/docker-volumes/

# 备份指定数据卷
docker-backup backup db-data nginx-logs --output /mnt/backup/docker-volumes/

5.3 自动化备份所有容器

bash
#!/bin/bash
# docker-backup.sh

BACKUP_DIR='/mnt/backup/docker'
DATE=$(date +%Y-%m-%d)
MAX_DAYS=14

mkdir -p $BACKUP_DIR

# 获取所有数据卷
VOLUMES=$(docker volume ls -q)

for volume in $VOLUMES; do
    echo "备份数据卷: $volume"
    docker run --rm \
        -v $volume:/data \
        -v $BACKUP_DIR:/backup \
        ubuntu:24.04 \
        tar czf /backup/$volume-$DATE.tar.gz /data
done

# 删除过期备份
find $BACKUP_DIR -name "*.tar.gz" -type f -mtime +$MAX_DAYS -delete

# 备份镜像列表
docker images > $BACKUP_DIR/images-$DATE.txt

# 备份容器配置
docker ps -a --format 'table {{.Names}}\t{{.Image}}\t{{.Ports}}' > $BACKUP_DIR/containers-$DATE.txt

5.4 使用 docker-compose 备份

bash
# 停止容器(避免写入不一致)
docker-compose stop

# 备份数据卷
docker run --rm \
  -v $(basename $(pwd))_db-data:/data \
  -v /mnt/backup:/backup \
  ubuntu:24.04 tar czf /backup/db-data-$(date +%Y-%m-%d).tar.gz /data

# 备份 compose 配置
cp docker-compose.yml /mnt/backup/docker-compose-$(date +%Y-%m-%d).yml

# 启动容器
docker-compose start

六、系统级快照:Timeshift

6.1 Timeshift 是什么?

Timeshift 是一个系统级备份工具,类似 Windows 的系统还原点:

  • ✅ 支持 Btrfs 原生快照
  • ✅ 支持 rsync 增量备份
  • ✅ 按计划自动创建快照
  • ✅ 可从 Live CD 恢复
  • ✅ 可在同一硬盘或外部硬盘存储

注意: Timeshift 主要备份系统文件,不建议备份用户数据(/home 目录)。

6.2 安装与初始化

bash
# Debian / Ubuntu
sudo apt install -y timeshift

# 初始化(rsync 模式,适合大多数文件系统)
sudo timeshift --create --comments "初始备份" --tags M

# 查看备份位置
sudo timeshift --list

6.3 常用操作

bash
# 创建手动快照
sudo timeshift --create --comments "更新前备份" --tags D

# 列出所有快照
sudo timeshift --list

# 恢复快照
sudo timeshift --restore

# 删除快照
sudo timeshift --delete --snapshot '2026-06-15_08-00-01'

# 删除所有快照(谨慎使用)
sudo timeshift --delete-all

6.4 配置自动定时备份

bash
# 编辑 Timeshift 配置
sudo nano /etc/timeshift/timeshift.json

# 常见配置项:
# backup_device_uuid: 备份设备 UUID
# schedule_monthly: 每月备份数量
# schedule_weekly: 每周备份数量
# schedule_daily: 每日备份数量
# schedule_hourly: 每小时备份数量
# exclude: 排除目录列表

典型排除列表:

json
{
  "exclude": [
    "/home/*",
    "/root/*",
    "/tmp/*",
    "/var/log/*",
    "/var/cache/*",
    "/mnt/*",
    "/media/*",
    "/proc/*",
    "/sys/*",
    "/dev/*",
    "/run/*",
    "/var/lib/docker/*",
    "node_modules",
    ".git"
  ]
}

6.5 完整系统恢复流程

当系统无法启动时:

  1. 用 Ubuntu Live CD/USB 启动
  2. 安装 Timeshift:
    bash
    sudo add-apt-repository -y ppa:teejee2008/ppa
    sudo apt update
    sudo apt install timeshift
  3. 挂载备份所在的分区
  4. 启动 Timeshift,选择备份恢复
  5. 重启系统

七、自动化:crontab 定时任务

7.1 crontab 基础语法

bash
# 打开 crontab 编辑器
crontab -e

# 查看当前任务
crontab -l

# 删除所有任务(谨慎)
crontab -r

时间格式:

分  时  日  月  周  命令
*   *   *   *   *   command-to-execute
│   │   │   │   │
│   │   │   │   └── 星期 (0-7,0=7=周日)
│   │   │   └─────── 月份 (1-12)
│   │   └──────────── 日期 (1-31)
│   └───────────────── 小时 (0-23)
└───────────────────── 分钟 (0-59)

7.2 常用示例

bash
# 每天凌晨 2 点执行每日备份
0 2 * * * /root/scripts/borg-backup.sh

# 每天凌晨 3 点备份数据库
0 3 * * * /root/scripts/mysql-backup.sh

# 每周日凌晨 4 点清理旧备份
0 4 * * 0 /root/scripts/backup-cleanup.sh

# 每小时检查备份状态(简单健康检查)
0 * * * * /root/scripts/check-backup-status.sh

# 每天凌晨 1 点执行完整系统备份
0 1 * * * /root/scripts/full-system-backup.sh

# 每周一凌晨 3 点执行大文件备份
0 3 * * 1 /root/scripts/big-files-backup.sh

# 每月 1 号凌晨 5 点归档
0 5 1 * * /root/scripts/monthly-archive.sh

7.3 完整的 crontab 配置示例

cron
# ================================================
# 备份任务配置
# ================================================

# 每日 BorgBackup 备份(凌晨 2:00)
0 2 * * * /root/scripts/borg-backup.sh >> /var/log/cron-backup.log 2>&1

# 每日数据库备份(凌晨 3:00)
0 3 * * * /root/scripts/mysql-backup.sh >> /var/log/cron-mysql.log 2>&1

# 每日 Docker 数据卷备份(凌晨 3:30)
30 3 * * * /root/scripts/docker-backup.sh >> /var/log/cron-docker.log 2>&1

# 每周清理旧备份(周日凌晨 4:00)
0 4 * * 0 find /mnt/backup -type f -name "*.tar.gz" -mtime +30 -delete >> /var/log/cron-cleanup.log 2>&1

# 每日系统快照(凌晨 1:00)
0 1 * * * timeshift --create --comments "每日自动快照" --tags D >> /var/log/cron-timeshift.log 2>&1

# 每月归档(每月 1 号凌晨 5:00)
0 5 1 * * /root/scripts/monthly-archive.sh >> /var/log/cron-monthly.log 2>&1

# ================================================
# 监控与报告
# ================================================

# 每小时检查磁盘空间
0 * * * * /root/scripts/check-disk-space.sh >> /var/log/cron-disk.log 2>&1

八、异地容灾方案

8.1 使用 rclone 同步到云端

bash
# 安装 rclone
curl https://rclone.org/install.sh | sudo bash

# 配置远程存储
rclone config

# 同步备份目录到 S3
rclone sync /mnt/backup/ s3:my-backup-bucket/backup/

# 同步到阿里云 OSS
rclone sync /mnt/backup/ oss:my-backup-bucket/backup/

# 同步到 Backblaze B2
rclone sync /mnt/backup/ b2:my-backup-bucket/backup/

# 查看远程文件
rclone ls s3:my-backup-bucket/backup/

8.2 异地服务器备份

bash
# 在备份服务器上准备好 SSH 免密钥登录
ssh-keygen -t rsa -b 4096
ssh-copy-id backupuser@remote-server.com

# 定时同步到异地服务器
rsync -avzh \
  -e 'ssh -p 22' \
  /mnt/backup/ \
  backupuser@remote-server.com:/mnt/offsite-backup/

8.3 完整的多层备份架构

VPS 服务器

├── 每日 rsync ─→ /mnt/backup/ 本地硬盘(快速恢复)

├── 每日 BorgBackup ─→ /mnt/borg-repo/ 增量备份(7 天/4 周/6 月)

├── 每日数据库备份 ─→ /mnt/backup/databases/ (SQL 压缩文件)

├── 每日 Docker 备份 ─→ /mnt/backup/docker/ (tar.gz)

└── 每周 rclone 同步 ─→ 云对象存储(S3/OSS)

                        └── 每月归档 ─→ 离线硬盘(冷存储)

九、备份验证与测试

9.1 定期检查备份完整性

bash
# 检查 BorgBackup 仓库完整性
borg check /mnt/backup/my-borg-repo

# 检查特定备份
borg check /mnt/backup/my-borg-repo::server1-2026-06-15

# 深度检查(较慢,建议每月一次)
borg check --verify-data /mnt/backup/my-borg-repo

# 检查 SQL 文件的完整性
gzip -t /mnt/backup/mysql/backup.sql.gz
# 或者解压后检查行数
gunzip -c /mnt/backup/mysql/backup.sql.gz | wc -l

# 检查 tar 归档
tar -tzf /mnt/backup/docker/my-data.tar.gz > /dev/null && echo "文件完整"

9.2 测试恢复流程

每月至少执行一次完整恢复测试:

bash
# 1. 创建测试恢复目录
mkdir -p /tmp/restore-test

# 2. 从 BorgBackup 中提取测试文件
cd /tmp/restore-test
borg extract /mnt/backup/my-borg-repo::server1-2026-06-14 \
  home/user/test-file.txt

# 3. 验证文件内容
cat home/user/test-file.txt

# 4. 测试数据库恢复(在测试环境)
mysql -u root -ptest test_db < /mnt/backup/mysql/test-2026-06-14.sql

# 5. 测试 Docker 数据卷恢复
docker volume create test-restore
docker run --rm -v test-restore:/data -v /mnt/backup/docker:/backup \
  ubuntu:24.04 tar xzf /backup/my-data-2026-06-14.tar.gz -C /

# 6. 清理测试文件
rm -rf /tmp/restore-test
docker volume rm test-restore

9.3 监控磁盘空间

bash
#!/bin/bash
# check-disk-space.sh

THRESHOLD=85  # 百分比阈值
BACKUP_DISK='/mnt/backup'

USAGE=$(df -h $BACKUP_DISK | tail -1 | awk '{print $5}' | tr -d '%')

if [ $USAGE -gt $THRESHOLD ]; then
    echo "⚠️ 警告:$BACKUP_DISK 使用率已达 $USAGE%,超过阈值 $THRESHOLD%"
    echo "建议清理旧备份或扩展存储空间"
    # 这里可以添加邮件通知或其他告警
fi

十、完整备份清单与最佳实践

10.1 必须备份的清单

项目路径频率保留时长
系统配置/etc每日30 天
网站数据/var/www每日90 天
用户数据/home每日永久
数据库MySQL/Postgres每日90 天
Docker 数据卷/var/lib/docker/volumes每日30 天
日志/var/log每日90 天
系统快照Timeshift每日/每周30 天
完整镜像VPS 快照每周4 周

10.2 备份清单 Checklist

10.3 常见错误与避免方法

错误后果避免方法
只备份不验证恢复时才发现备份损坏定期执行恢复测试
备份在同一硬盘硬盘损坏时一起丢失使用独立磁盘/异地存储
备份路径包含备份目录无限递归,耗尽磁盘在脚本中排除备份目录
没有加密数据泄露风险使用 BorgBackup 加密或其他加密
备份未定期清理磁盘空间被占满设置 prune/过期策略
没有测试恢复流程紧急时不知道怎么恢复每月执行一次完整恢复练习
数据库热备份不一致恢复后数据损坏使用 mysqldump/pg_dump 等专用工具

结语

数据备份的本质是风险管理。你付出的是一些存储空间和自动化工作时间,换来的是数据安全的保障。

记住三个原则:

  1. 自动化:让备份自动运行,不要依赖人工操作
  2. 验证:定期测试恢复流程,确保备份有效
  3. 冗余:多位置、多介质存储,不要把鸡蛋放在一个篮子

现在就去设置你的备份! 数据只有在你失去它时才知道它有多珍贵。

推荐阅读:


💾 提示: 最好的备份策略是——已经实施的策略。不要等到数据丢失了才开始备份。


延伸阅读

免责声明

本文仅供技术交流和学习参考。涉及第三方服务的链接可能包含 sponsored 标记,请自行核实服务条款、价格和可用性,并遵守当地法律法规。