有个朋友去年跑了一个小网站,攒了大半年内容,结果服务器被黑,数据全丢了。他花了两周才从搜索引擎快照里勉强恢复了一部分内容,图片损失大半,SEO 排名直接掉到谷底。这种事其实很常见,网站跑起来之后大家都不太想备份这件事,直到出了问题才后悔。
说白了,备份这件事做好两件事就够了:数据库和网站文件。先把这两块搞定,再谈自动化的东西。
手动备份:两个地方必须拿下
数据库备份
不管你用 MySQL 还是 PostgreSQL,原理都一样,把数据库导出成一个文件存到本地。
MySQL 的话,一条命令搞定:
mysqldump -u用户名 -p数据库名 > backup_$(date +%Y%m%d).sql
执行完之后当前目录会多出一个 .sql 文件,这就是你的数据库完整副本。恢复的时候反着来就行:
mysql -u用户名 -p数据库名 < backup_20260325.sql
如果用的是 phpMyAdmin 之类的面板,直接在后台点导出,下载到本地。操作很简单,但很多人嫌麻烦懒得做,其实整个过程两分钟就能搞定。
网站文件备份
文件备份比数据库简单,直接打包压缩就行:
tar -czvf website_backup_$(date +%Y%m%d).tar.gz /var/www/html/
这条命令把 /var/www/html/ 下面的所有文件打包压缩,文件名带日期方便管理。如果你的网站文件比较大,可以用 rsync 增量备份,只同步变化的部分,节省时间和空间:
rsync -avz /var/www/html/ user@backup-server:/backup/website/
备份频率建议
个人博客或者小站,一个月手动备份一次其实也够了,毕竟内容更新不频繁。但如果你每天都有新内容发布,至少一周一次,重要的更新之后立刻手动备份一份。
自动备份:设置好就不用管了
手动备份的问题在于依赖人的自觉性,忙起来很容易忘。自动备份才是正解,设置好之后系统自己跑,不用操心。
利用系统定时任务
Linux 自带的 cron 配合前面的命令,可以实现定时自动备份。比如每天凌晨 3 点自动备份数据库和网站文件:
编辑 crontab:
crontab -e
添加以下内容:
0 3 * * * /usr/bin/mysqldump -u用户名 -p密码 数据库名 > /backup/db_$(date +\%Y\%m\%d).sql
0 3 * * * /usr/bin/tar -czvf /backup/site_$(date +\%Y\%m\%d).tar.gz /var/www/html/
这样每天凌晨 3 点会自动执行备份,文件存到 /backup/ 目录。不过这只是备份到本地硬盘,万一服务器本身出问题,本地备份也没了。
备份到云端
真正的安全备份需要把文件存到另一台机器或者云存储。萤光云的用户可以直接用他们提供的对象存储 OSS,把备份文件自动同步过去,不需要自己折腾 rsync 和额外服务器配置,对新手比较友好。具体操作在控制台的对象存储页面,上传备份文件即可,也可以通过 API 脚本实现自动上传。
第三方备份工具
不想折腾命令的话,可以看看这些工具:
Duplicati 是一个开源备份客户端,支持把数据备份到各种云存储,支持增量备份和加密,免费使用,配置界面相对友好,适合不想碰命令行的用户。
rclone 是个命令行工具,但用起来不算复杂,专门用来管理各种云存储之间的数据同步,支持国内主流云厂商的对象存储服务,学习成本不高,学会之后非常实用。
如果你的网站跑在 Docker 环境,docker-compose 配置里加上 volume 挂载,配合 rclone 定时同步,整个备份流程可以完全自动化。
备份策略建议
说白了,备份就三个原则:多处存放、定期执行、能恢复验证。
多处存放的意思是,本地硬盘一份、云端一份,别全放一个地方。定期执行靠定时任务自动跑,设定好频率之后不用管。能恢复验证是很多人忽略的一点,光备份没用,你得定期测试一下能不能正常恢复,不然备份损坏了自己都不知道。
对于小站来说,萤光云的基础套餐配合定时任务加 OSS 备份,每个月花不了多少钱,数据安全这件事做到位了,睡觉都踏实很多。网站跑起来之后,备份是唯一值得花时间提前做好的事情。
全球主机测评






