在Ubuntu上使用LNMP(Linux, Nginx, MySQL, PHP)堆棧時,實現自動備份是一個重要的任務,以確保數據的安全性和可恢復性。以下是一個基本的步驟指南,幫助你設置自動備份:
mysqldump工具你可以使用mysqldump工具來備份MySQL數據庫。創建一個備份腳本:
#!/bin/bash
# 數據庫配置
DB_USER="your_db_user"
DB_PASSWORD="your_db_password"
DB_NAME="your_db_name"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +%Y%m%d%H%M%S)
# 創建備份目錄
mkdir -p $BACKUP_DIR
# 執行備份
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql
# 可選:壓縮備份文件
gzip $BACKUP_DIR/$DB_NAME-$DATE.sql
保存這個腳本為backup_mysql.sh,并賦予執行權限:
chmod +x backup_mysql.sh
使用crontab設置定時任務,例如每天凌晨2點執行備份:
crontab -e
添加以下行:
0 2 * * * /path/to/backup_mysql.sh
創建一個備份Nginx配置文件的腳本:
#!/bin/bash
# Nginx配置文件路徑
NGINX_CONF="/etc/nginx/nginx.conf"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +%Y%m%d%H%M%S)
# 創建備份目錄
mkdir -p $BACKUP_DIR
# 執行備份
cp $NGINX_CONF $BACKUP_DIR/nginx.conf-$DATE
保存這個腳本為backup_nginx.sh,并賦予執行權限:
chmod +x backup_nginx.sh
同樣使用crontab設置定時任務,例如每天凌晨3點執行備份:
crontab -e
添加以下行:
0 3 * * * /path/to/backup_nginx.sh
創建一個備份網站文件的腳本:
#!/bin/bash
# 網站文件路徑
WEBSITE_ROOT="/var/www/html"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +%Y%m%d%H%M%S)
# 創建備份目錄
mkdir -p $BACKUP_DIR
# 執行備份
tar -czf $BACKUP_DIR/website-$DATE.tar.gz -C $WEBSITE_ROOT .
保存這個腳本為backup_website.sh,并賦予執行權限:
chmod +x backup_website.sh
同樣使用crontab設置定時任務,例如每天凌晨4點執行備份:
crontab -e
添加以下行:
0 4 * * * /path/to/backup_website.sh
通過上述步驟,你可以設置自動備份MySQL數據庫、Nginx配置文件和網站文件。確保備份目錄有足夠的空間,并且定期檢查備份文件的完整性和可恢復性。