使用腳本與Crontab為Drupal網站實現自動化備份
使用腳本與Crontab為Drupal網站實現自動化備份
1. 創建一個備份腳本
創建一個Shell腳本,例如 backup-drupal.sh
。以下是完整腳本內容,適用於備份Drupal網站的文件和數據庫。
#!/bin/bash
# ------------------------
# 配置變數
# ------------------------
BACKUP_DIR="/path/to/backup" # 備份文件存儲目錄
DRUPAL_DIR="/path/to/drupal" # Drupal網站根目錄
DB_NAME="your_database_name" # 數據庫名稱
DB_USER="your_database_user" # 數據庫用戶
DB_PASSWORD="your_database_password" # 數據庫密碼
DATE=$(date +%Y%m%d_%H%M%S) # 當前日期(用於命名)
# ------------------------
# 建立備份目錄
# ------------------------
mkdir -p "$BACKUP_DIR/$DATE"
# ------------------------
# 備份網站文件
# ------------------------
echo "正在備份網站文件..."
tar -czf "$BACKUP_DIR/$DATE/drupal-files-$DATE.tar.gz" "$DRUPAL_DIR"
echo "網站文件備份完成:$BACKUP_DIR/$DATE/drupal-files-$DATE.tar.gz"
# ------------------------
# 備份數據庫
# ------------------------
echo "正在備份數據庫..."
mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "$BACKUP_DIR/$DATE/drupal-db-$DATE.sql"
echo "數據庫備份完成:$BACKUP_DIR/$DATE/drupal-db-$DATE.sql"
# ------------------------
# 清理舊備份(保留30天)
# ------------------------
echo "清理舊備份..."
find "$BACKUP_DIR" -type d -mtime +30 -exec rm -rf {} \;
echo "清理完成,備份過程結束。"
# ------------------------
# 備份成功提示
# ------------------------
echo "Drupal備份已完成,存儲於 $BACKUP_DIR/$DATE"
2.配置Crontab執行腳本
設置腳本執行權限
chmod +x /path/to/backup-drupal.sh
打開Crontab
執行以下命令以編輯當前用戶的Crontab:
sudo crontab -e
添加自動備份腳本
0 2 * * * /path/to/backup-drupal.sh