返回博客
一月 13, 2026指南

如何在 Linux 服务器上配置自动备份

关于如何为文件和数据库设置使用 cron 任务的自动化备份脚本的逐步指南。

如何在 Linux 服务器上配置自动备份

定期备份对于保护您的数据至关重要。本指南向您展示如何在 Hiddence 服务器上使用 shell 脚本和 cron 任务为您的文件和数据库设置自动备份。

创建备份脚本

为您的文件创建一个备份脚本:

bash
sudo nano /usr/local/bin/backup.sh
#!/bin/bash
BACKUP_DIR="/backups"
SOURCE_DIR="/var/www"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/backup_$DATE.tar.gz $SOURCE_DIR
find $BACKUP_DIR -name "backup_*.tar.gz" -mtime +7 -delete
sudo chmod +x /usr/local/bin/backup.sh

设置 Cron 任务

使用 cron 安排自动备份:

bash
sudo crontab -e
# 添加此行以在每天凌晨 2 点运行备份
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

数据库备份脚本

为 MySQL 数据库备份创建脚本:

bash
sudo nano /usr/local/bin/db_backup.sh
#!/bin/bash
BACKUP_DIR="/backups/db"
DB_NAME="your_database"
DB_USER="root"
DB_PASS="your_password"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/db_backup_$DATE.sql
gzip $BACKUP_DIR/db_backup_$DATE.sql
find $BACKUP_DIR -name "db_backup_*.sql.gz" -mtime +7 -delete
sudo chmod +x /usr/local/bin/db_backup.sh

远程备份存储

使用 rsync 或 SCP 将备份复制到远程服务器:

bash
#!/bin/bash
BACKUP_DIR="/backups"
REMOTE_HOST="backup-server.com"
REMOTE_USER="backup"
REMOTE_DIR="/backups"
rsync -avz -e ssh $BACKUP_DIR/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/

备份保留策略

配置保留以在特定时期内保留备份:

bash
# 保留 7 天的每日备份
find /backups -name "backup_*.tar.gz" -mtime +7 -delete

# 保留 4 周的每周备份
find /backups/weekly -name "backup_*.tar.gz" -mtime +28 -delete

# 保留 12 个月的每月备份
find /backups/monthly -name "backup_*.tar.gz" -mtime +365 -delete

备份最佳实践

  • 定期测试备份恢复
  • 在多个位置存储备份
  • 加密敏感备份数据
  • 监控备份日志中的错误
  • 记录您的备份流程
  • 为备份失败设置警报