云服务器怎么做定期备份,别等数据丢了才想起来

数据备份这件事,有一个非常真实的规律:没出事的时候觉得没必要,出事了之后肠子都悔青了

云服务器上的数据丢失风险来自很多方面:硬盘故障、误操作删除、被黑客清空、系统崩溃……云厂商虽然保障底层基础设施的可靠性,但不负责你业务层面的数据。备份还是得自己搞。

备份什么

在考虑怎么备份之前,先搞清楚要备份什么:

  • 数据库:网站内容、用户数据,通常是最重要的
  • 网站文件:代码、上传的图片和附件
  • 配置文件:Nginx/Apache配置、环境配置等
  • 系统快照:整个服务器的镜像(如果需要快速恢复整个环境)

几种常见备份方案

方案一:云厂商快照(最简单)

腾讯云、阿里云等都提供云盘快照功能,可以对整个系统盘做定期快照。设置定时快照策略,每天或每周自动执行,出问题直接回滚。

优点:操作简单,无需写脚本,恢复也方便。
缺点:按存储量收费,快照多了成本不低;恢复时是整个磁盘回滚,无法只恢复某个文件。

适合:业务不复杂、对操作便利性要求高的场景。

方案二:数据库定时导出

对于MySQL/MariaDB数据库,可以写一个简单的shell脚本定时导出:

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/db"
mkdir -p $BACKUP_DIR

mysqldump -u root -p'你的密码' --all-databases | gzip > $BACKUP_DIR/all_db_$DATE.sql.gz

# 删除7天前的备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete

echo "备份完成: all_db_$DATE.sql.gz"

然后用cron定时执行:

# 每天凌晨2点执行
0 2 * * * /root/backup_db.sh >> /var/log/backup.log 2>&1

这个方案免费,灵活,数据库备份恢复也方便。

方案三:文件备份到对象存储

把备份文件传到云存储(腾讯云COS、阿里云OSS等),比放在本机安全很多——本机出问题,备份也跟着没了,意义不大。

可以用rclone这个工具,配置好对象存储连接后,一条命令就能同步:

# 同步网站目录到COS
rclone sync /var/www/html cos:your-bucket/website-backup/

结合cron定时执行,实现全自动备份。

方案四:WordPress专用(如果你用WordPress)

用UpdraftPlus插件是最简单的选择,可以定时自动备份数据库+文件,并且直接上传到Google Drive、Dropbox、OneDrive或者S3/COS等云存储。免费版功能已经够用了。

备份的几个基本原则

  • 异地存储:备份不要只放在本机,最好放到另一个地方(对象存储、另一台服务器)
  • 定期验证:备份文件是否能正常恢复,得实际测试一次,别以为有备份就万事大吉
  • 保留多个版本:至少保留最近7天或者4周的备份,以防数据损坏好几天后才发现
  • 自动化:手动备份迟早会忘,一定要搞成定时自动执行

从哪里开始

如果你现在完全没有备份,最快的起点是:打开云服务器控制台,开启系统盘的定时快照,哪怕一周一次,也比什么都没有强。然后再逐步完善数据库和文件的备份策略。

花半小时把备份配好,可能某一天能救你几天的工作量。