在LNMP(Linux+Nginx+MySQL+PHP)环境中实现自动备份是保障数据安全的重要措施。以下是完整的自动备份解决方案:
需要备份的主要内容包括: 1. MySQL数据库 2. 网站程序文件 3. Nginx配置文件 4. PHP配置文件
#!/bin/bash
# 数据库备份脚本 /root/scripts/mysql_backup.sh
# 配置信息
DB_USER="root"
DB_PASS="your_password"
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
KEEP_DAYS=7
# 创建备份目录
mkdir -p $BACKUP_DIR
# 获取所有数据库列表
DATABASES=$(mysql -u$DB_USER -p$DB_PASS -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)")
# 备份每个数据库
for db in $DATABASES; do
mysqldump -u$DB_USER -p$DB_PASS --single-transaction --routines --triggers $db | gzip > "$BACKUP_DIR/${db}_${DATE}.sql.gz"
done
# 删除过期备份
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +$KEEP_DAYS -exec rm -f {} \;
#!/bin/bash
# 网站文件备份脚本 /root/scripts/web_backup.sh
# 配置信息
WEB_DIR="/var/www"
BACKUP_DIR="/backup/web"
DATE=$(date +%Y%m%d_%H%M%S)
KEEP_DAYS=7
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份网站文件
tar -czf "$BACKUP_DIR/web_${DATE}.tar.gz" $WEB_DIR
# 删除过期备份
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +$KEEP_DAYS -exec rm -f {} \;
#!/bin/bash
# 配置文件备份脚本 /root/scripts/config_backup.sh
# 配置信息
CONFIG_FILES="/etc/nginx /etc/php /etc/mysql"
BACKUP_DIR="/backup/config"
DATE=$(date +%Y%m%d_%H%M%S)
KEEP_DAYS=30
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份配置文件
tar -czf "$BACKUP_DIR/config_${DATE}.tar.gz" $CONFIG_FILES
# 删除过期备份
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +$KEEP_DAYS -exec rm -f {} \;
使用crontab设置自动执行:
# 编辑crontab
crontab -e
# 添加以下内容(示例为每天凌晨3点执行备份)
0 3 * * * /bin/bash /root/scripts/mysql_backup.sh
30 3 * * * /bin/bash /root/scripts/web_backup.sh
45 3 * * * /bin/bash /root/scripts/config_backup.sh
#!/bin/bash
# 远程备份脚本 /root/scripts/remote_backup.sh
REMOTE_USER="backupuser"
REMOTE_HOST="backup.server.com"
REMOTE_DIR="/backups/$(hostname)"
LOCAL_DIR="/backup"
rsync -avz --delete -e ssh $LOCAL_DIR/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR
# 加密备份示例(在原有备份命令后添加)
openssl enc -aes-256-cbc -salt -in original_backup.tar.gz -out encrypted_backup.tar.gz.enc -pass pass:your_password
# 解密命令
openssl enc -d -aes-256-cbc -in encrypted_backup.tar.gz.enc -out original_backup.tar.gz -pass pass:your_password
# 安装Borg
apt install borgbackup # Debian/Ubuntu
yum install borgbackup # CentOS/RHEL
# 初始化备份仓库
borg init --encryption=repokey /backup/borg-repo
# 创建备份
borg create --stats --progress /backup/borg-repo::'{hostname}-{now}' /var/www /etc/nginx /etc/mysql
# 自动清理旧备份
borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=12 /backup/borg-repo
通过以上方案,您可以建立一个可靠、自动化的LNMP环境备份系统,确保在发生意外时能够快速恢复服务。