很多站长把 VPS 买回来、网站跑起来之后,就很少再管服务器里的数据了。直到某天发现商家跑路、磁盘损坏、或者手滑删了数据库,才追悔莫及。数据这个东西,平时看不见摸不着,丢了才知道疼。这篇文章按真实操作顺序,把 VPS 备份从手动打包、定时自动备份,到异地容灾和实战恢复,一次讲清。
一、先搞清楚:你的 VPS 上什么最值钱
很多人以为备份就是把网站文件打包一份,其实 VPS 上值得备份的不止这些:
1. 网站源码与上传文件:WordPress 之类的站点目录、上传目录,丢了重装很麻烦。
2. 数据库:MySQL 或 MariaDB 的数据,这是网站的灵魂,没了数据库网站基本就废了。
3. 配置文件:Nginx 的站点配置、PHP 的 php.ini、SSH 配置、crontab 定时任务,重装系统之后全靠它们恢复。
4. 证书与密钥:SSL 证书、SSH 密钥,丢了要么花钱重买证书,要么重配一堆客户端。
二、手动备份入门:两条命令搞定
第一步,备份网站文件,用 tar 打包:
tar -czvf /backup/www_$(date +%F).tar.gz /www/wwwroot/你的站点目录
第二步,备份数据库,用 mysqldump 导出再压缩:
mysqldump -uroot -p你的密码 你的数据库名 | gzip > /backup/db_$(date +%F).sql.gz
两条命令执行完,/backup 目录下就有了当天的网站和数据库备份。手动备份简单直接,但坏处是要靠人记着去执行,而人最容易忘的恰恰是这件事。
三、定时自动备份:让服务器自己干
备份要形成习惯,不能靠手动记,用 crontab 定时任务最靠谱。先写一个备份脚本 /root/backup.sh:
#!/bin/bash
BACKUP_DIR=/backup
DATE=$(date +%F)
tar -czvf $BACKUP_DIR/www_$DATE.tar.gz /www/wwwroot/你的站点目录
mysqldump -uroot -p你的密码 你的数据库名 | gzip > $BACKUP_DIR/db_$DATE.sql.gz
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
脚本里最后两行的意思是只保留最近 7 天的备份,避免备份文件把磁盘撑爆。然后给脚本加执行权限,并写入定时任务:
chmod +x /root/backup.sh
crontab -e
在打开的编辑器里加一行,让服务器每天凌晨 3 点自动执行:
0 3 * * * /root/backup.sh >> /var/log/backup.log 2>&1
这样服务器每天都会自动备份,你只需要隔几天看一眼 /var/log/backup.log,确认备份有没有成功。特别提醒:mysqldump 的输出一定要重定向到日志,不然哪天数据库密码改了、备份悄悄失败了,你可能几个月后才发现。
四、异地备份:别把鸡蛋放在一个篮子里
备份存在同一台 VPS 上有个致命问题:如果整台机器挂了、或者商家跑路了,本地备份会跟着一起消失。所以异地备份是必须的,这里推荐两种最常用的方式。
方式一:rsync 同步到另一台服务器。如果你手上有两台 VPS,可以用 rsync 把 /backup 目录增量同步过去:
rsync -avz --delete /backup/ root@另一台服务器IP:/backup/
配合 cron 每天同步一次,两台机器互为备份,非常稳妥。
方式二:备份到对象存储。国内用阿里云 OSS、腾讯云 COS,国外用 AWS S3、Backblaze B2,用 rclone 就能一键上传:
rclone copy /backup 你的存储桶名:/backup
对象存储的好处是便宜、容量大、不怕单点故障,基本是现在最主流的异地备份方案。
五、恢复实战:备份能恢复才有意义
备份做得再勤,不会恢复等于白做。恢复分两步。
第一步,恢复数据库。解压备份文件后导入:
gzip -d db_2026-11-05.sql.gz
mysql -uroot -p 你的数据库名 < db_2026-11-05.sql
第二步,恢复网站文件。解压回原目录,并修复文件属主:
tar -xzvf www_2026-11-05.tar.gz -C /www/wwwroot/
chown -R www:www /www/wwwroot/你的站点目录
恢复完成后清一下浏览器缓存、刷新一下 CDN,确认网站正常再收工。强烈建议:备份配好之后,找一天在另一台新机器上完整演练一次恢复流程,真出事了才第一次练手,大概率会手忙脚乱。
六、几个容易被忽略的细节
1. 备份要加密。备份文件里有数据库密码、用户数据,泄露出去就是事故,用 gpg 或 zip -P 给备份文件加上密码。
2. 备份过程中保持数据一致。数据库导出建议加 --single-transaction 参数,避免备份到一半的数据。
3. 记住 3-2-1 原则:3 份备份、2 种介质、1 份放异地。这是数据安全的基本功。
4. 定期检查备份能不能正常解压,别备份成功就以为万事大吉。
备份这件事,最大的成本不是工具也不是时间,而是想起来才做。把自动备份配好、异地备份跑通、恢复流程演练一遍,你的网站才算真正上了保险。如果你的 VPS 还没做备份,今天就动手配一套吧。