影视站数据备份与恢复完全指南
数据备份是影视站运维的底线保障。数据丢失可能导致站点无法恢复。本文将详细介绍影视站数据备份与恢复方案。
一、备份内容清单
| 备份对象 | 内容 | 重要性 | 频率 |
|----------|------|--------|------|
| 数据库 | 影片/用户/配置 | 极高 | 每日 |
| 上传文件 | 封面/截图 | 高 | 每周 |
| 程序代码 | 模板/插件 | 中 | 变更时 |
| 配置文件 | Nginx/PHP | 高 | 变更时 |
| SSL证书 | 域名证书 | 高 | 到期前 |
二、数据库备份
```bash
#!/bin/bash
# MySQL自动备份脚本
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="your_database"
DB_USER="root"
DB_PASS="your_password"
KEEP_DAYS=30
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份并压缩
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz
# 删除旧备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +$KEEP_DAYS -delete
# 上传到远程存储
# rclone copy $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz remote:backup/mysql/
echo "Backup completed: ${DB_NAME}_${DATE}.sql.gz"
```
三、文件备份
```bash
#!/bin/bash
# 文件备份脚本
BACKUP_DIR="/backup/files"
DATE=$(date +%Y%m%d)
SITE_DIR="/var/www/html"
# 备份上传文件
tar -czf $BACKUP_DIR/uploads_${DATE}.tar.gz $SITE_DIR/upload/
# 备份配置文件
tar -czf $BACKUP_DIR/config_${DATE}.tar.gz /etc/nginx/ /etc/php/ $SITE_DIR/config/
# 备份SSL证书
tar -czf $BACKUP_DIR/ssl_${DATE}.tar.gz /etc/letsencrypt/
```
四、自动备份Cron
```bash
# 编辑crontab
crontab -e
# 每日凌晨2点数据库备份
0 2 * * * /scripts/backup_mysql.sh >> /var/log/backup.log 2>&1
# 每周日凌晨3点文件备份
0 3 * * 0 /scripts/backup_files.sh >> /var/log/backup.log 2>&1
# 每月1日完整备份
0 4 1 * * /scripts/backup_full.sh >> /var/log/backup.log 2>&1
```
五、灾难恢复流程
```bash
#!/bin/bash
# 恢复脚本
BACKUP_FILE=$1
# 1. 恢复数据库
echo "Restoring database..."
gunzip < $BACKUP_FILE | mysql -u$DB_USER -p$DB_PASS $DB_NAME
# 2. 恢复文件
echo "Restoring files..."
tar -xzf /backup/files/uploads_YYYYMMDD.tar.gz -C /
# 3. 恢复配置
echo "Restoring config..."
tar -xzf /backup/files/config_YYYYMMDD.tar.gz -C /
# 4. 重启服务
systemctl restart nginx
systemctl restart php-fpm
# 5. 验证
curl -s -o /dev/null -w "%{http_code}" http://localhost
```
六、备份验证
```bash
# 定期验证备份可用性
#!/bin/bash
LATEST_BACKUP=$(ls -t /backup/mysql/*.sql.gz | head -1)
# 解压并检查
gunzip -c $LATEST_BACKUP | head -100 | grep -q "CREATE TABLE"
if [ $? -eq 0 ]; then
echo "Backup valid: $LATEST_BACKUP"
else
echo "Backup INVALID: $LATEST_BACKUP"
# 发送告警
# curl -d "Backup check failed" https://alert.example.com
fi
```
总结
数据备份需覆盖数据库、文件、配置和证书。推荐每日数据库备份+每周文件备份+异地存储。定期验证备份可用性。资源组(ziyuanzu.com)建议建立完善的备份机制。
---
> 本文由 资源组(ziyuanzu.com) 原创整理发布,转载请注明出处。资源组持续收录和评测各类优质影视资源站与采集站,为影视站长提供最专业的资源站导航、采集站评测与视频源监控服务。