搬瓦工VPS备份恢复教程
前置准备
- 已购买搬瓦工VPS
- 能够SSH连接到服务器
说实话,备份这件事我吃过大亏。之前有一台搬瓦工VPS跑了半年多,上面的网站和配置都没备份过。结果有一天手贱执行了个危险命令,整个系统文件全没了。从那以后我养成了严格的备份习惯——每周自动备份、每月更新快照、重要操作前手动备份。这篇教程我把搬瓦工VPS备份和恢复的所有方法都整理出来了,花15分钟配置好,以后就不用担心数据丢失了。
还没有搬瓦工VPS?点击购买备份方式对比
搬瓦工VPS有三种主要的备份方式,各有优缺点。先搞清楚它们的区别,再决定用哪种。
| 对比项 | KiwiVM快照 | 手动备份 | 自动备份脚本 |
|---|---|---|---|
| 备份内容 | 整个系统镜像 | 指定文件和数据库 | 指定文件和数据库 |
| 备份位置 | 搬瓦工服务器 | VPS本地 | 远程服务器/云存储 |
| 操作难度 | 简单,一键操作 | 中等,需要命令 | 较高,需要写脚本 |
| 恢复速度 | 快,一键还原 | 需要手动操作 | 需要手动操作 |
| 保留数量 | 最多2个 | 不限 | 不限 |
| 备份频率 | 手动触发 | 手动触发 | 自动定时 |
| 安全性 | 一般(同一平台) | 一般(同一VPS) | 高(异地存储) |
我的建议:三种方式最好配合使用。KiwiVM快照做兜底保障,手动备份在重要操作前执行,自动备份脚本处理日常定期备份。
第一步:创建KiwiVM快照
KiwiVM快照是最简单的备份方式,一键操作就能保存整个VPS的当前状态,包括系统、文件、配置、数据库——全部打包。
操作步骤
- 登录KiwiVM面板(不知道怎么进的话看KiwiVM面板使用教程)
- 在左侧菜单找到「Snapshots」
- 点击「Create new snapshot」按钮
- 系统开始创建快照,大约需要2-10分钟(取决于数据量)
- 创建完成后,在Snapshots列表中可以看到刚创建的快照
快照管理须知
| 项目 | 说明 |
|---|---|
| 最大快照数 | 2个 |
| 快照保存期限 | 不会自动删除 |
| 创建频率 | 没有明确限制,但建议不要太频繁 |
| 快照大小 | 取决于VPS使用的磁盘空间 |
| 创建时需要停机吗 | 不需要,在线即可创建 |
踩过一个坑:快照最多只能保留2个。如果你已经有2个快照了,需要先删掉一个旧的才能创建新的。我的习惯是保留一个”稳定状态”快照和一个”最新状态”快照,每次做重大修改之前更新”最新状态”那个。
快照恢复
需要恢复的时候:
- 在Snapshots页面找到要恢复的快照
- 点击「Restore」按钮
- 确认恢复操作(恢复会覆盖当前所有数据)
- 等待恢复完成,大约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端口、密钥配置 |
| Crontab | crontab -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快照恢复
这个最简单,前面已经讲过了:
- 登录KiwiVM面板→Snapshots
- 选择要恢复的快照→点击Restore
- 等待恢复完成
恢复后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快照保留多久?
手动备份应该备份什么?
可以备份到其他服务器吗?
常见问题
- KiwiVM快照保留多久?
- 搬瓦工允许保存2个快照,不会自动删除。但建议定期更新快照,保持备份数据的时效性。
- 手动备份应该备份什么?
- 最重要的是网站文件(/www或/var/www目录)和数据库。配置文件(Nginx/PHP/MySQL配置)也建议备份。
- 可以备份到其他服务器吗?
- 可以。使用rsync或scp命令可以将备份文件传输到另一台服务器或本地电脑,实现异地备份。
编辑部
了解更多