建立和 manage VPS服务器备份定义 RPO/RTO,选择备份方法(快照、文件级或映像级),自动化作业,将加密副本异地存储,强制执行保留策略,并定期测试恢复。
使用 3-2-1 规则 (3份副本,2份介质,1份异地保存) 为了最大限度地减少数据丢失并加快恢复速度,备份虚拟专用服务器并非可有可无,它是您抵御硬件故障、攻击和人为错误的最后一道防线。
在本分步指南中,您将学习如何规划、设置、自动化和测试。 VPS服务器备份 采用安全、经济高效且适合初学者的成熟方法。
为什么VPS服务器备份如此重要?

停机时间和 数据丢失 备份成本高昂。一个完善的备份计划可以保护您的网站、应用程序和数据库免受勒索软件、意外删除、迁移失败和错误更新的侵害。您的目标很简单:
- 快速恢复 (低 RTO)
- 尽可能减少数据丢失(低RPO)
- 将副本异地保存并加密
威胁不断演变,但严谨的备份策略仍然是您能为 VPS 购买的最可靠、最具成本效益的保险。
你必须了解的备份概念
在进行任何设置之前,请先熟悉构成每个 VPS 备份策略的基本要素。
- 快照与备份: 快照是速度很快的、提供商级别的磁盘映像。它们非常适合即时回滚,但通常与现有基础架构位于同一位置。备份则具有可移植性,能够感知应用程序,并存储在异地。
- 完全、增量、微分: 完整备份会复制所有内容。增量备份会保存自上次备份以来的更改。差异备份会保存自上次完整备份以来的更改。增量备份的存储效率最高。
- 3-2-1 规则: 保留 3 份副本,分别保存在 2 种介质上,其中 1 份异地保存。
- 恢复点目标 (RPO)/恢复时间目标 (RTO): 恢复点目标(可接受的数据丢失)和恢复时间目标(可接受的停机时间)指导您的计划和工具。
- 应用一致性: 数据库需要定期备份或快照以避免数据损坏。
- 加密与不可篡改性: 对静态数据和传输中的数据进行加密。使用对象锁定/不可变性来抵御勒索软件。
制定您的VPS备份策略
首先要明确目标。记录下你要备份的内容、备份文件的存储位置以及恢复方式。
- 需要备份的内容: 网站根目录(/var/www)、应用程序代码、配置文件(/etc) SSL 键用户上传和数据库(MySQL/MariaDB/PostgreSQL)。
- 频率: 根据 RPO 进行映射。例如:对于繁忙的网站:每小时增量更新 + 每晚清理;对于博客,每晚清理。
- 保留: 常用频率:每日 (7)、每周 (4)、每月 (12)。根据合规性和预算进行调整。
- 目的地: 异地 S3 兼容存储、其他区域或专用备份存储。
- 工具: 提供商快照,cPanel/Plesk 备份、rsync/tar 或现代去重工具,如 restic/borg。
对于许多团队来说,混合方法效果最佳:频繁的提供商快照可实现快速回滚,加上加密的异地备份用于灾难恢复。
方法一:使用服务提供商的快照(快速回滚)
提供商快照会创建您 VPS 磁盘在特定时间点的映像。它们非常适合在进行重大更新或部署之前使用。
- 优点(Pros) 一键快速恢复,无需 服务器负载 恢复时。
- 缺点(Cons) 通常保留在同一服务提供商处;不能替代异地备份。
- 步骤:
- 启用自动 如果您的主机提供每日快照功能,请获取每日快照。
- 创建手册 升级或迁移前的快照。
- 定期出口 可以创建快照,也可以将其与异地备份结合使用。
提示: YouStable VPS 提供自动快照和可选的异地备份插件,因此您可以将即时回滚与防灾难存储结合起来。
方法二:使用 Restic 进行自动异地备份(推荐)
雷斯蒂奇 是一款快速、开源、带去重功能的备份工具,内置加密功能。它支持 S3 兼容存储。 SFTP而且更适合自动化异地 VPS 备份。
硬件需求
- Ubuntu的/ Debian的 服务器(其他发行版上的命令类似)。
- S3 兼容存储桶(例如 AWS、Wasabi、Backblaze 或提供商对象存储)。
- 具有对单个存储桶/路径最小权限的访问密钥。
1. 安装 Restic
sudo apt-get update
sudo apt-get install -y restic2. 配置安全环境变量
创建一个文件来保存凭据和仓库设置。
sudo bash -c 'cat >/root/.restic-env' <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.YOUR-PROVIDER.com/your-bucket/vps1"
export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_KEY"
export RESTIC_PASSWORD="Choose-A-Strong-Unique-Password"
EOF
sudo chmod 600 /root/.restic-env3. 初始化存储库
source /root/.restic-env
restic init4. 创建排除项和备份脚本
排除缓存、临时文件和其他非必要路径。
sudo bash -c 'cat >/root/.backup-excludes.txt' <<'EOF'
/proc
/sys
/tmp/*
/var/cache/*
/var/tmp/*
/swapfile
EOF
sudo chmod 600 /root/.backup-excludes.txt创建备份脚本。
sudo bash -c 'cat >/usr/local/sbin/vps-backup.sh' <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
source /root/.restic-env
HOST=$(hostname)
EXCLUDES=/root/.backup-excludes.txt
# Optional: create fresh database dumps before file backup
# MySQL/MariaDB example:
# mysqldump --single-transaction --routines --triggers --events --all-databases | gzip > /var/backups/mysql-$(date +%F).sql.gz
# PostgreSQL example:
# sudo -u postgres pg_dumpall | gzip > /var/backups/postgres-$(date +%F).sql.gz
restic backup \
--host "$HOST" \
--tag "daily" \
--exclude-file "$EXCLUDES" \
/etc /var/www /var/backups
# Retention policy: adjust to your needs
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
# Integrity check
restic check --with-cache
EOF
sudo chmod 700 /usr/local/sbin/vps-backup.sh5. 安排每日备份(Cron)
(crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/sbin/vps-backup.sh >> /var/log/vps-backup.log 2>&1") | crontab -可选的: 在脚本中向监控 URL(例如 Healthchecks)发送成功/失败 ping 请求以获取警报。
6. 测试恢复(请勿跳过)
source /root/.restic-env
mkdir -p /restore-test
restic snapshots
restic restore latest --target /restore-test --include /var/www
ls -lah /restore-test/var/www验证文件、权限和完整性。定期进行测试恢复可以确保备份真正有效。
方法三:应用一致性数据库备份
仅靠文件备份可能会遗漏正在写入数据库的数据。为了确保数据一致性,需要添加逻辑或物理转储。
MySQL/MariaDB(逻辑转储)
mysqldump --user=root -p \
--single-transaction --routines --triggers --events --all-databases \
| gzip > /var/backups/mysql-$(date +%F).sql.gz将 /var/backups 添加到 restic 作业中。对于非常大的数据集,请考虑使用 mariabackup/Percona XtraBackup。
PostgreSQL(逻辑转储)
sudo -u postgres pg_dumpall | gzip > /var/backups/postgres-$(date +%F).sql.gz或者,使用 pg_dump 每个数据库或 pg_basebackup 用于物理流式备份。
你应该练习的恢复场景
- 单文件恢复: 无需触及整个服务器即可恢复配置或媒体上传。
- 应用回滚: 使用最新的已知良好快照或备份恢复 /var/www。
- 服务器完全重建: 配置一台全新的 VPS,安装 restic,恢复 /etc、/var/www 和数据库转储,然后重启服务。
# Example: single directory restore
source /root/.restic-env
restic restore latest --target /restore --include /etc/nginx对于提供商快照,该过程通常只需单击一下即可还原或替换卷,速度很快,但为了提高恢复能力,应与异地备份结合使用。
安全与合规最佳实践
- 加密 备份静态和传输中的凭据;切勿在脚本中存储明文凭据。
- 最小权限: 将对象存储键限制为一个存储桶和一个命名空间。
- 不变性: 启用对象锁定/WORM 和存储桶版本控制,以阻止勒索软件篡改。
- 独立账户/区域 用于异地备份,使其能够在服务提供商级别事件中幸存。
- 审计和日志: 保留备份日志、访问日志,并定期轮换密钥。
成本优化技巧
- 绝大部分储备使用 增量去重 (restic/borg)可将未更改数据的存储空间减少 50-90%。
- 在断裂前, 排除 用于缓存和临时路径。
- 音调保留: 如果预算紧张,就减少月付;为了安全起见,就延长周付期限。
- 将旧备份移至 低成本存储类别 如果支持。
- 安排在非高峰时段进行备份,以节省带宽。 CPU.
要避免的常见错误
- 仅依赖于存储在同一提供商处的快照。
- 从不测试恢复(这是最昂贵的错误)。
- 无需转储或静默即可备份不一致的数据库。
- 将秘密信息保存在全世界可读的文件或存储库中。
- 忽略日志和静默故障 cron工作.
快速参考:Rsync 替代方案(SFTP(另一台服务器)
如果您更喜欢将文件简单地同步到另一台服务器,请使用 rsync 而不是 SSH它不像 restic 那样进行去重,但它很简单。
rsync -aHAX --delete --numeric-ids \
--exclude-from=/root/.backup-excludes.txt \
/etc /var/www /var/backups \
backupuser@backup.example.com:/backups/$(hostname)/结合定期数据库转储,并确保目标位置具有版本控制或快照功能以进行回滚。
常见问题
对于大多数网站来说,备份VPS的最佳方法是什么?
混合方法: 每晚使用 restic 或 borg 进行加密异地备份(包括数据库转储),并每日提供服务商快照以实现即时回滚。这在快速恢复和真正的灾难恢复能力之间取得了平衡。
VPS备份应该多久运行一次?
根据您的恢复点目标 (RPO) 调整备份频率。动态应用和商店:每小时增量备份或至少每晚备份。博客和小网站:每晚备份。始终保留每周和每月备份,以提供长期保障。
仅使用快照就足以进行 VPS 备份吗?
不。快照速度很快,但通常存储在同一服务提供商处,容易受到账户问题的影响。快照适用于快速回滚,而异地备份则适用于真正的灾难恢复。
如何测试我的备份?
将文件恢复到单独的路径,验证文件完整性,并每季度进行一次完整的服务器恢复演练。记录恢复步骤并保持运行手册的更新。
我的VPS备份需要多少存储空间?
作为参考,建议使用去重工具,将数据保留期限设置为数据量的 2-3 倍,并保留 30 天。对于高度动态的数据或数据库,可能需要更长的保留期限。请监控数据增长情况并调整保留策略。
通过规划 RPO/RTO、自动化加密异地备份以及测试恢复流程,您可以确保您的 VPS 能够抵御故障和威胁。如果您需要专家帮助, YouStable 可以协助您设计和管理端到端的备份策略。