网站自动备份方案:数据库 + 文件定时备份,再也不怕数据丢失

zheng头像
zheng 2026-07-14 21:00
楼主

> 服务器硬盘坏了、被黑客删库、误操作删了重要文件——这些事情不常发生,但一旦发生就是灾难。一套好的自动备份方案,是你网站的最后一道保险。

---

## 备份什么?

网站数据分为两部分:

| 内容 | 位置 | 说明 |
|------|------|------|
| 数据库 | SQLite/MySQL | 文章、用户、评论等 |
| 文件 | 网站目录 | 主题、插件、上传的图片 |

两者都要备份,缺一不可。

---

## 方案一:Shell 脚本 + crontab

创建备份脚本 /opt/backup.sh:

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

# 备份数据库
tar -czf "$BACKUP_DIR/db_$DATE.tar.gz" /mnt/mmcblk1p1/typecho/usr/typecho.db

# 备份网站文件
tar -czf "$BACKUP_DIR/files_$DATE.tar.gz" /var/www/html/

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

echo "Backup completed at $DATE"
```

添加定时任务(每天凌晨 3 点执行):

```bash
chmod +x /opt/backup.sh
crontab -e
# 添加这一行:
0 3 * * * /opt/backup.sh >> /var/log/backup.log 2>&1
```

---

## 方案二:rsync 增量备份

rsync 只同步变化的部分,适合大文件:

```bash
rsync -avz --delete /var/www/html/ /mnt/backup/html/
```

---

## 方案三:异地备份(强烈推荐)

如果备份和网站放在同一块硬盘上,硬盘坏了全完蛋。建议用 rclone 同步到云存储:

```bash
# 安装 rclone
curl https://rclone.org/install.sh | bash

# 配置(以 Google Drive 为例)
rclone config

# 同步备份目录到云端
rclone sync /mnt/backups remote:blog-backups
```

支持 OneDrive、Google Drive、Dropbox、阿里云 OSS 等。

---

## 备份策略建议

| 频率 | 保留数量 | 存储位置 |
|------|---------|---------|
| 每天 | 保留最近 7 天 | 本地 |
| 每周 | 保留最近 4 周 | 异地(云存储) |
| 每月 | 保留最近 3 个月 | 异地(云存储) |

---

## 恢复备份

备份再好,不会恢复等于白做:

```bash
# 恢复数据库
cd /tmp && tar -xzf db_backup.tar.gz
cp typecho.db /mnt/mmcblk1p1/typecho/usr/

# 恢复网站文件
tar -xzf files_backup.tar.gz -C /

# 检查文件权限
chown -R www-data:www-data /var/www/html/
```

---

花 10 分钟配好自动备份,可能在未来某天帮你省下几天的修复时间。数据无价,备份别省。

服务器安全加固指南:防火墙、fail2ban 与 SSH 防护 crontab 定时任务完全指南:让服务器自动干活

最新回复

暂无回复,来说两句吧

发表评论

站点总访问量:2820