在Debian上使用LNMP(Linux, Nginx, MySQL, PHP)环境时,自动备份数据库和网站文件是一个重要的任务。以下是一个基本的步骤指南,帮助你设置自动备份。
mysqldump 工具创建备份脚本
创建一个名为 backup_db.sh 的脚本文件:
nano /usr/local/bin/backup_db.sh
在文件中添加以下内容:
#!/bin/bash
# 数据库配置
DB_USER="your_db_user"
DB_PASSWORD="your_db_password"
DB_NAME="your_db_name"
BACKUP_DIR="/path/to/your/backup/directory"
# 当前日期
DATE=$(date +"%Y%m%d%H%M%S")
# 备份文件名
FILENAME="$BACKUP_DIR/$DB_NAME-$DATE.sql"
# 执行备份
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $FILENAME
# 压缩备份文件
gzip $FILENAME
# 删除超过7天的备份文件
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -exec rm {} \;
保存并退出编辑器。
设置脚本权限
chmod +x /usr/local/bin/backup_db.sh
设置定时任务
使用 cron 设置定时任务:
crontab -e
添加以下行以每天凌晨2点执行备份脚本:
0 2 * * * /usr/local/bin/backup_db.sh
tar 工具创建备份脚本
创建一个名为 backup_nginx.sh 的脚本文件:
nano /usr/local/bin/backup_nginx.sh
在文件中添加以下内容:
#!/bin/bash
# Nginx配置文件路径
NGINX_CONF="/etc/nginx/nginx.conf"
BACKUP_DIR="/path/to/your/backup/directory"
# 当前日期
DATE=$(date +"%Y%m%d%H%M%S")
# 备份文件名
FILENAME="$BACKUP_DIR/nginx-$DATE.conf"
# 执行备份
cp $NGINX_CONF $FILENAME
# 压缩备份文件
gzip $FILENAME
# 删除超过7天的备份文件
find $BACKUP_DIR -type f -name "*.conf.gz" -mtime +7 -exec rm {} \;
保存并退出编辑器。
设置脚本权限
chmod +x /usr/local/bin/backup_nginx.sh
设置定时任务
使用 cron 设置定时任务:
crontab -e
添加以下行以每天凌晨3点执行备份脚本:
0 3 * * * /usr/local/bin/backup_nginx.sh
tar 工具创建备份脚本
创建一个名为 backup_files.sh 的脚本文件:
nano /usr/local/bin/backup_files.sh
在文件中添加以下内容:
#!/bin/bash
# 网站文件路径
SITE_DIR="/var/www/html"
BACKUP_DIR="/path/to/your/backup/directory"
# 当前日期
DATE=$(date +"%Y%m%d%H%M%S")
# 备份文件名
FILENAME="$BACKUP_DIR/site-$DATE.tar.gz"
# 执行备份
tar -czvf $FILENAME $SITE_DIR
# 删除超过7天的备份文件
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;
保存并退出编辑器。
设置脚本权限
chmod +x /usr/local/bin/backup_files.sh
设置定时任务
使用 cron 设置定时任务:
crontab -e
添加以下行以每天凌晨4点执行备份脚本:
0 4 * * * /usr/local/bin/backup_files.sh
通过上述步骤,你可以在Debian上设置自动备份MySQL数据库、Nginx配置文件和网站文件。确保备份目录有足够的空间,并定期检查备份文件的完整性和可用性。