搬瓦工VPS备份恢复教程

作者:编辑部
备份 数据恢复 快照
预计 15 分钟 难度:进阶

前置准备

  • 已购买搬瓦工VPS
  • 能够SSH连接到服务器

说实话,备份这件事我吃过大亏。之前有一台搬瓦工VPS跑了半年多,上面的网站和配置都没备份过。结果有一天手贱执行了个危险命令,整个系统文件全没了。从那以后我养成了严格的备份习惯——每周自动备份、每月更新快照、重要操作前手动备份。这篇教程我把搬瓦工VPS备份和恢复的所有方法都整理出来了,花15分钟配置好,以后就不用担心数据丢失了。

还没有搬瓦工VPS?点击购买

备份方式对比

搬瓦工VPS有三种主要的备份方式,各有优缺点。先搞清楚它们的区别,再决定用哪种。

对比项KiwiVM快照手动备份自动备份脚本
备份内容整个系统镜像指定文件和数据库指定文件和数据库
备份位置搬瓦工服务器VPS本地远程服务器/云存储
操作难度简单,一键操作中等,需要命令较高,需要写脚本
恢复速度快,一键还原需要手动操作需要手动操作
保留数量最多2个不限不限
备份频率手动触发手动触发自动定时
安全性一般(同一平台)一般(同一VPS)高(异地存储)

我的建议:三种方式最好配合使用。KiwiVM快照做兜底保障,手动备份在重要操作前执行,自动备份脚本处理日常定期备份。

第一步:创建KiwiVM快照

KiwiVM快照是最简单的备份方式,一键操作就能保存整个VPS的当前状态,包括系统、文件、配置、数据库——全部打包。

操作步骤

  1. 登录KiwiVM面板(不知道怎么进的话看KiwiVM面板使用教程
  2. 在左侧菜单找到「Snapshots」
  3. 点击「Create new snapshot」按钮
  4. 系统开始创建快照,大约需要2-10分钟(取决于数据量)
  5. 创建完成后,在Snapshots列表中可以看到刚创建的快照

快照管理须知

项目说明
最大快照数2个
快照保存期限不会自动删除
创建频率没有明确限制,但建议不要太频繁
快照大小取决于VPS使用的磁盘空间
创建时需要停机吗不需要,在线即可创建

踩过一个坑:快照最多只能保留2个。如果你已经有2个快照了,需要先删掉一个旧的才能创建新的。我的习惯是保留一个”稳定状态”快照和一个”最新状态”快照,每次做重大修改之前更新”最新状态”那个。

快照恢复

需要恢复的时候:

  1. 在Snapshots页面找到要恢复的快照
  2. 点击「Restore」按钮
  3. 确认恢复操作(恢复会覆盖当前所有数据)
  4. 等待恢复完成,大约2-5分钟

注意:恢复快照会完全覆盖当前VPS的所有数据,恢复后的状态就是创建快照时的状态。恢复操作不可撤销,所以恢复前想清楚。

第二步:手动备份重要数据

KiwiVM快照虽然方便,但有两个问题:只能存2个、存在搬瓦工自己的平台上。手动备份可以弥补这些不足,把关键数据单独打包保存。

备份网站文件

# 如果用宝塔面板,网站文件通常在这个目录
cd /www/wwwroot/

# 打包整个网站目录
tar -czf /root/backup/website-$(date +%Y%m%d).tar.gz /www/wwwroot/

# 如果没有宝塔,网站可能在这里
tar -czf /root/backup/website-$(date +%Y%m%d).tar.gz /var/www/

备份数据库

# 备份单个数据库
mysqldump -u root -p 数据库名 > /root/backup/db-$(date +%Y%m%d).sql

# 备份所有数据库
mysqldump -u root -p --all-databases > /root/backup/all-db-$(date +%Y%m%d).sql

备份配置文件

# 备份Nginx配置
tar -czf /root/backup/nginx-conf-$(date +%Y%m%d).tar.gz /etc/nginx/

# 备份PHP配置
tar -czf /root/backup/php-conf-$(date +%Y%m%d).tar.gz /etc/php/

# 备份SSH配置
cp /etc/ssh/sshd_config /root/backup/sshd_config.bak

# 备份crontab
crontab -l > /root/backup/crontab-$(date +%Y%m%d).txt

应该备份什么

备份内容路径重要程度说明
网站文件/www/wwwroot/最重要网站代码、图片、上传的文件
数据库MySQL数据最重要文章、用户数据、配置信息
Nginx配置/etc/nginx/重要网站配置、SSL证书路径
SSL证书/etc/letsencrypt/重要证书文件(不备份要重新申请)
SSH配置/etc/ssh/一般SSH端口、密钥配置
Crontabcrontab -l一般定时任务配置
宝塔面板/www/server/panel/看情况宝塔自带备份功能

第三步:设置自动备份脚本

手动备份总会忘,配置一个自动备份脚本才是长久之计。我分享一个我自己在用的脚本,每天自动备份网站和数据库,保留最近7天的备份。

创建备份脚本

vi /root/auto-backup.sh

写入以下内容:

#!/bin/bash

# 备份配置
BACKUP_DIR="/root/backups"
DATE=$(date +%Y%m%d_%H%M)
KEEP_DAYS=7

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份网站文件
tar -czf $BACKUP_DIR/website-$DATE.tar.gz /www/wwwroot/ 2>/dev/null

# 备份数据库(替换成你的数据库密码)
mysqldump -u root -p'你的数据库密码' --all-databases > $BACKUP_DIR/database-$DATE.sql 2>/dev/null

# 压缩数据库备份
gzip $BACKUP_DIR/database-$DATE.sql

# 备份Nginx配置
tar -czf $BACKUP_DIR/nginx-$DATE.tar.gz /etc/nginx/ 2>/dev/null

# 删除超过7天的旧备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +$KEEP_DAYS -delete
find $BACKUP_DIR -name "*.sql.gz" -mtime +$KEEP_DAYS -delete

# 输出备份完成信息
echo "$(date): Backup completed" >> /var/log/backup.log

设置文件权限和定时任务

# 给脚本执行权限
chmod +x /root/auto-backup.sh

# 先手动跑一次测试
/root/auto-backup.sh

# 检查备份文件是否生成
ls -la /root/backups/

# 设置crontab定时任务
crontab -e

添加一行(每天凌晨3点自动备份):

0 3 * * * /root/auto-backup.sh

将备份传输到远程(推荐)

备份文件放在同一台VPS上其实不太安全,如果VPS本身挂了备份也没了。我建议把备份传到另一个地方。

方法一:用rsync传到另一台服务器

# 在备份脚本最后加上这行
rsync -avz $BACKUP_DIR/ user@另一台服务器IP:/path/to/backup/

方法二:传到本地电脑

在本地电脑上设置定时从VPS下载备份:

scp -P 你的SSH端口 root@你的VPS_IP:/root/backups/*.tar.gz /本地备份目录/

方法三:上传到对象存储

如果你有阿里云OSS或者Backblaze B2账号,可以用rclone工具自动上传备份到云存储,这是最安全的异地备份方案。

第四步:恢复数据

备份做好了,还得知道怎么恢复。不同的备份方式恢复方法不同。

从KiwiVM快照恢复

这个最简单,前面已经讲过了:

  1. 登录KiwiVM面板→Snapshots
  2. 选择要恢复的快照→点击Restore
  3. 等待恢复完成

恢复后VPS会变成快照创建时的完整状态。

从备份文件恢复网站

# 解压网站文件到原目录
tar -xzf /root/backups/website-20260222_0300.tar.gz -C /

# 设置正确的文件权限
chown -R www:www /www/wwwroot/

从备份文件恢复数据库

# 解压数据库备份
gunzip /root/backups/database-20260222_0300.sql.gz

# 恢复数据库
mysql -u root -p < /root/backups/database-20260222_0300.sql

恢复操作注意事项

注意事项说明
恢复前先备份当前状态万一恢复的版本也有问题,还能回退
检查文件权限恢复后文件权限可能不对,需要手动修正
重启相关服务恢复配置文件后需要重启Nginx、PHP、MySQL等
检查数据一致性恢复后检查网站是否正常、数据是否完整
DNS和SSL如果换了服务器恢复,需要检查DNS和SSL证书

备份策略建议

根据我管理VPS的经验,分享一套实用的备份策略。

备份频率建议

数据类型建议频率方式
网站文件每天一次自动备份脚本
数据库每天一次自动备份脚本
KiwiVM快照每月一次手动创建
配置文件修改后立即备份手动备份
全量异地备份每周一次rsync到远程

备份保留策略

备份类型保留时间说明
每日备份保留7天脚本自动删除过期备份
每周备份保留4周每周日的备份多保留一份
KiwiVM快照保留2个一个稳定版本、一个最新版本
重大操作前备份长期保留升级系统、迁移数据前的备份

什么时候必须手动备份

除了日常自动备份,以下情况一定要手动备份一次:

  • 升级操作系统或内核
  • 安装新的服务(Nginx、MySQL等)
  • 修改重要配置文件
  • 迁移机房或更换IP
  • 方案升级
  • 安装或更新宝塔面板

我有个习惯:每次做重要操作前,先在KiwiVM面板创建一个快照,再手动tar一份关键文件。这样哪怕操作搞砸了,分分钟能恢复。

关于VPS的更多操作,可以参考搬瓦工新手指南。SSH连接的操作方法在SSH连接教程里有详细说明。购买新VPS时别忘了用最新优惠码

前往搬瓦工官网购买 VPS

搬瓦工备份恢复常见问题

KiwiVM快照保留多久?
搬瓦工允许保存2个快照,不会自动删除,可以一直保留。但因为只能存2个,建议定期更新快照内容。我的做法是保留一个稳定运行的版本和一个最新状态的版本。
手动备份应该备份什么?
最重要的是网站文件(/www/wwwroot/目录)和数据库(用mysqldump导出)。其次是配置文件,包括Nginx配置、PHP配置、SSH配置等。SSL证书文件也建议备份,不然到期要重新申请。
可以备份到其他服务器吗?
可以,而且强烈推荐这样做。使用rsync或scp命令可以把备份文件传到另一台服务器或本地电脑。最安全的做法是同时保留本地备份和远程备份,避免单点故障导致备份也丢失。

常见问题

KiwiVM快照保留多久?
搬瓦工允许保存2个快照,不会自动删除。但建议定期更新快照,保持备份数据的时效性。
手动备份应该备份什么?
最重要的是网站文件(/www或/var/www目录)和数据库。配置文件(Nginx/PHP/MySQL配置)也建议备份。
可以备份到其他服务器吗?
可以。使用rsync或scp命令可以将备份文件传输到另一台服务器或本地电脑,实现异地备份。
编辑部的头像

编辑部

了解更多