实用的VPS备份策略(3-2-1规则)

由ApexVPS团队撰写 • 最后更新:2026年7月 • 7分钟阅读

可靠的VPS备份策略是五分钟恢复和糟糕一周之间的区别。服务器会故障,磁盘会损坏,部署会出错,一条命令输错就可能清空目录。Cloudflare学习中心和大多数基础设施团队都指向同一个简单的纪律:3-2-1规则。本指南介绍如何将其应用于真实的虚拟服务器、使用哪些工具,以及如何安排和测试所有内容,以便在需要时恢复真正起作用。

3-2-1规则的含义

3-2-1规则是一个有着数十年历史的备份原则,无论服务器位于何处都适用:

在VPS上,这通常意味着您的运行服务器、本地备份仓库以及推送到异地远程存储的加密副本。关键在于冗余,且没有共享的单一故障点。

VPS上需要备份的内容

逐块备份整个磁盘既浪费又缓慢。一个良好的备份计划应聚焦于三类真正难以重建的数据。

应用数据与文件

上传的文件、网站根目录、容器卷及任何用户生成的内容。常见路径包括/var/www/srv/home以及您的Docker卷目录。如果您自托管文件服务器或wiki等应用,您的不可替代内容就在这些目录中——参见我们的VPS自托管指南了解这些目录的通常布局。

数据库

切勿在服务运行时直接复制数据库文件——可能会捕获到写入一半的损坏状态。请导出一致的转储。对于MySQL或MariaDB:

mysqldump --single-transaction --routines --triggers \
  -u backup -p mydatabase > /srv/backups/mydatabase.sql

--single-transaction参数可为InnoDB表提供一致快照且无需锁定。对于PostgreSQL,请改用pg_dump

pg_dump -U postgres -Fc mydatabase > /srv/backups/mydatabase.dump

系统与服务配置

让服务器具备独特性的文件:/etc(nginx、systemd单元、cron、SSH配置)、软件包列表、TLS证书和防火墙规则。故障后凭记忆重建这些内容正是备份所要避免的繁琐工作。

选择您的备份工具

三种工具几乎覆盖所有VPS场景。根据您对去重和加密的重视程度进行选择。

restic——加密、去重的快照

restic是一种现代的单二进制备份工具,默认进行加密和去重。初始化仓库一次,然后对其运行备份:

# One-time: create an encrypted repository
restic init --repo /srv/backups/restic

# Back up files and your database dump
restic -r /srv/backups/restic backup /etc /var/www /srv/backups/mydatabase.sql

# List what you have
restic -r /srv/backups/restic snapshots

BorgBackup——去重归档

BorgBackup提供类似的去重和压缩功能,但工作流程略有不同:

borg init --encryption=repokey /srv/backups/borg
borg create --stats /srv/backups/borg::'{hostname}-{now}' /etc /var/www

rsync——简单文件镜像

当您仅需快速将文件镜像到其他主机时,通过SSH使用rsync难有敌手:

rsync -aAX --delete /var/www/ [email protected]:/backups/www/

-aAX参数保留权限、ACL和扩展属性;--delete使镜像与源保持同步。rsync本身不保留版本历史,因此许多团队将其与restic或borg搭配使用。

使用cron自动化调度

需要记得运行的备份往往不会被运行。将步骤写入脚本,使其可执行,并通过cron调度。用以下命令编辑crontab:

crontab -e

然后添加类似这样的行:

# Full file + config backup every night at 02:15
15 2 * * * /usr/local/bin/vps-backup.sh

# Database dump every hour on the hour
0 * * * * /usr/local/bin/db-dump.sh

记录输出,并让脚本在失败时以非零状态退出,以便接入您的套餐所附带的监控与提醒功能。静默的备份失败比没有备份更糟糕,因为它让人误以为一切安全。

保留真正的异地副本

3-2-1中的“1”是多数人忽略的部分。存放在所保护服务器本地的备份会随服务器一同消失。请将加密副本推送到独立位置——对象存储、远程SFTP主机或其他提供商。restic和borg均可直接写入远程仓库,例如通过SFTP:

restic -r sftp:[email protected]:/backups/restic backup /var/www

由于restic和borg在数据离开VPS前即已加密,远程主机永远无法看到明文。按策略清理旧快照,以免存储无限增长:

restic -r /srv/backups/restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

每次务必测试恢复

未经过测试的备份只是一种传闻。在临时位置定期执行恢复演练,并确认文件和数据库完好归来:

# Restore the latest snapshot into a scratch directory
restic -r /srv/backups/restic restore latest --target /tmp/restore-test

# Verify repository integrity
restic -r /srv/backups/restic check

# Re-import a database dump into a scratch database
mysql -u root -p restore_test < /srv/backups/mydatabase.sql

如果恢复成功且数据匹配,你就有了策略。如果没有,你只是在一个周二的下午而不是在真正的中断期间学到了这一点。

快照只是其中一层,不是完整策略

每个ApexVPS套餐都包含自动备份——Starter Pro每日快照,Business每小时快照——在糟糕的部署或意外删除后,它们对于快速回滚确实非常实用。但请如实看待它们的定位:它们只是驻留在我们平台上的便捷第一道防线,不能替代3-2-1规则所要求的异地、独立验证副本。请将平台快照视为快速的本地恢复点,并自行运行restic或borg任务来满足规则中的异地与恢复测试部分。无论是自托管Nextcloud这类应用还是运行生产数据库,这种分层做法才是让系统从“碰运气”走向“有韧性”的关键。

您的 VPS 备份策略清单

综合起来,完整备份策略如下。完全执行一次,编写脚本,让 cron 自动执行:

完成这六件事,3-2-1 规则就不再是理论,而是成为您基础设施可以依赖的习惯。与事故发生中发现唯一副本就在刚死掉的磁盘上相比,前期一小时的设置微不足道。

需要一台您完全控制的服务器来运行这些吗? ApexVPS 为您提供完整 root 权限、NVMe 存储和专用资源,覆盖 39 个数据中心——仅支持加密货币结账,无需信用卡和 KYC。比较专用 VPS 套餐 →

常见问题

提供商的快照能算作备份策略吗?

快照是有用的一层,但不是完整策略。我们的每日和每小时快照可以防止大多数短期错误,但它们的存储位置与您的服务器在同一平台。完整的 3-2-1 备份策略仍然需要您控制的独立异地副本,以及您实际测试过的恢复。

我应该多久备份一次 VPS?

备份频率应根据您可以承受丢失的数据量来匹配。静态文件和配置可以每日备份,而活跃数据库通常值得每小时转储。使用 cron 自动化计划,这样备份永远不必依赖记住运行它们。

VPS 备份的最佳工具是什么?

restic 和 BorgBackup 都是极好的选择:它们对备份进行去重、压缩和加密,并支持异地仓库。rsync 适用于简单的文件镜像,而 mysqldump 或 pg_dump 处理数据库导出。许多设置结合了数据库转储和 restic 或 borg 运行。

我如何知道我的备份实际有效?

按计划测试恢复。恢复到临时目录,验证文件内容和校验和,并将数据库转储导入临时数据库。从未恢复过的备份只是满怀希望地猜测,而不是恢复计划。