上线优惠价:每个套餐的价格都比我们追踪的最便宜的离岸竞争对手低 30%。 查看价格对比所有套餐价格均比最便宜的离岸主机服务商低 30%

知识库 · VPS

VPS 快照与异地备份

OffshoreServ VPS 快照的工作原理、各套餐包含的快照数量、如何创建一致性快照,以及如何使用 restic 或 Borg 添加加密的异地备份。

更新于 阅读约 5 分钟

本指南要点

  • 快照是 VPS 硬盘在某一时间点的副本,用于快速回滚。它不能替代异地备份。
  • 各套餐包含的快照数量:2 个(Dinghy、Sloop、Cutter)、3 个(Schooner、Brigantine)或 5 个(Frigate、Flagship)。
  • 申请快照前,请先转储或停止数据库。
  • 使用 restic 或 Borg 将加密备份发送到另一个地点,清理旧版本并测试恢复。
VPS6 个章节
全部指南
本页内容
  1. 快照与备份的区别
  2. 各套餐的快照数量
  3. 创建、恢复和删除快照
  4. 创建一致性快照
  5. 使用 restic 或 Borg 进行异地备份
  6. 自动化、清理与测试

快照可以让离岸 VPS 快速回滚。备份则能在服务器本身或您对它的访问权限丢失时帮您恢复数据。两者缺一不可。本指南将介绍两者的区别、各套餐的快照上限、如何创建能让数据库完好无损的快照,以及如何设置加密的异地备份。

快照与备份的区别

快照是 VPS 整个硬盘在某一时间点的副本,与 VPS 一起保存在我们的平台上。恢复快照会让整台服务器完全回到当时的状态,因此它是升级失败或配置出错后最快的撤销方式。

备份是存放在其他地方的数据副本:另一台服务器、另一个地点,或您自己的硬件。它独立于 VPS,可以保留多个版本,并且支持恢复单个文件。常用的原则是 3-2-1:数据保留三份副本,存放在两种存储介质上,其中一份位于异地。

对比项快照异地备份
复制内容整个硬盘您选择的文件和数据库转储
存放位置在我们的平台上,与您的 VPS 放在一起在其他地方、由您控制的机器上
恢复回滚整个硬盘单个文件或完整重建
版本数2 至 5 个,视套餐而定取决于您的保留规则
防范的风险有问题的更新、配置错误服务器丢失、访问权限丢失、数周后才发现的错误

各套餐的快照数量

套餐快照
Dinghy, Sloop, Cutter2
Schooner, Brigantine3
Frigate, Flagship5

如果所有快照名额都已占用,请在申请中注明要替换哪个快照。

创建、恢复和删除快照

创建

在客户中心的服务器页面上,于服务器操作下选择创建快照,并为其起一个能说明用途的名称,例如 before-php-upgrade。我们的团队会创建快照,完成后同一页面上的申请会显示为已完成:在进行发行版升级、更换新内核或数据库迁移等高风险变更之前,请等到申请显示为已完成。如果服务器运行着数据库,请先按照下一节的说明做好准备。

恢复

在服务器操作中选择恢复快照,并注明快照名称。VPS 会恢复到快照时的状态,重新上线后申请会显示为已完成。请检查您的服务是否已启动,计划任务和证书是否仍然正常。

删除

在服务器操作中通过删除快照提交申请,并注明快照名称。快照一经删除便无法恢复。请至少保留一个确认完好的快照,例如完成初始设置后创建的那个;变更前创建的快照,可在变更稳定运行几天后再删除。

创建一致性快照

对运行中的服务器创建的快照具有崩溃一致性:硬盘状态就如同在那一刻突然断电一样。日志文件系统能很好地应对这种情况。数据库通常也能恢复,但可能丢失最近的事务,而正处于写入过程中的表可能会损坏。在为运行数据库的服务器申请快照之前,请使用以下两种方法之一。

短暂停止数据库

最简单的方法。停止服务(PostgreSQL 的服务名为 postgresql):

systemctl stop mariadb

申请快照,待申请显示为已完成后再重新启动服务(在此之前数据库将保持停止状态):

systemctl start mariadb

先转储数据库

数据库必须保持运行时的更好方法:即使运行中的数据库文件处于不一致状态,在申请快照前刚刚生成的转储仍是一致的,而且还可以用于异地备份。从转储开始到申请显示为已完成期间,请勿写入任何重要数据。对于 MariaDB(MySQL 上的命令为 mysqldump):

mkdir -p /root/db-dumps
chmod 700 /root/db-dumps
mariadb-dump --all-databases --single-transaction --routines --events > /root/db-dumps/mariadb.sql

对于 PostgreSQL:

runuser -u postgres -- pg_dumpall > /root/db-dumps/postgresql.sql

使用 restic 或 Borg 进行异地备份

restic 和 Borg 都会在数据离开服务器之前就在服务器上完成加密,并对数据去重,以很低的成本保留多个版本。目标端只能看到加密后的数据,因此可以是任何您能通过 SSH 访问的机器:另一台 VPS、我们其他地区的存储服务器,或者您家中的机器。请备份 /etc、/home、/root、网站根目录和应用数据,以及数据库转储(而不是运行中的数据库文件)。请根据您的服务器调整示例中的路径。

restic

在 VPS 上安装 restic,为 root 创建 SSH 密钥并将其复制到备份主机。然后生成随机的仓库密码,初始化仓库并运行第一次备份:

apt install -y restic
ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_ed25519
ssh-copy-id backup@BACKUP_HOST
install -m 600 /dev/null /root/.restic-pass
openssl rand -base64 32 > /root/.restic-pass
export RESTIC_REPOSITORY=sftp:backup@BACKUP_HOST:/srv/restic/web1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init
restic backup /etc /home /root /var/www --exclude-caches
restic snapshots

Borg

备份主机上也必须安装 Borg,因为它会通过 SSH 在那里运行。请按照 restic 示例设置 SSH 密钥。以下命令适用于 Borg 1.2 和 1.4,即当前 Debian 和 Ubuntu 版本中打包的版本:

apt install -y borgbackup
install -m 600 /dev/null /root/.borg-pass
openssl rand -base64 32 > /root/.borg-pass
export BORG_REPO=ssh://backup@BACKUP_HOST/./borg/web1
export BORG_PASSCOMMAND="cat /root/.borg-pass"
borg init --encryption=repokey-blake2
borg create --stats --compression zstd '::{hostname}-{now}' /etc /home /root /var/www
borg list
borg key export "$BORG_REPO" /root/borg-key.txt

将 borg-key.txt 和密码短语保存在服务器之外的安全位置,然后从 VPS 上删除导出的文件。

自动化、清理与测试

将两行 export、数据库转储命令和备份命令写入一个脚本(例如 /usr/local/sbin/offsite-backup),并将其设为仅 root 可读:

chmod 700 /usr/local/sbin/offsite-backup
crontab -e

在 root 的 crontab 中添加一行,让它每晚 03:30 运行:

30 3 * * * /usr/local/sbin/offsite-backup

在脚本末尾加上保留规则,以删除旧版本。以下规则会保留一周的每日备份、一个月的每周备份和六个月的每月备份。对于 restic:

restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

对于 Borg:

borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
borg compact

未经测试的备份在需要时可能无法恢复。请每月检查一次仓库,并恢复到一个临时目录中。使用 restic:

restic check
restic restore latest --target /root/restore-test

使用 Borg 时,先列出归档,然后将其中一个解压到空目录中:

borg check
mkdir -p /root/restore-test
cd /root/restore-test
borg extract '::ARCHIVE_NAME' etc

自行推送备份的服务器,一旦被攻击者获取 root 权限,这些备份也可能被删除。为防止这种情况,请在备份主机上将仓库设为仅追加模式:restic 的 rest-server 提供 --append-only 模式,Borg 则可以通过在备份用户的 authorized_keys 中加入 borg serve --append-only 进行限制。加固指南可以帮助您从一开始就将攻击者拒之门外。

某个步骤遇到困难?

独立服务器和 GPU 服务器客户可在客户中心提交工单,注明服务器的 IP 地址以及已尝试过的操作。首次回复目标:12 小时内。其他服务器请使用其页面上的服务器操作、指南和网络状态页面。

欢迎回来

登录以管理您的服务器和余额。

无需 KYC由 Cloudflare Turnstile 提供人机验证无跟踪