# 全量备份网站目录
tar -czpf /backup/web_$(date +%Y%m%d).tar.gz /home/wwwroot/
# 增量备份(需要先安装rsync)
rsync -avz --delete /home/wwwroot/ /backup/web_incremental/
# 单数据库备份
mysqldump -u用户名 -p密码 数据库名 > /backup/db_数据库名_$(date +%Y%m%d).sql
# 全库备份
mysqldump -u用户名 -p密码 --all-databases > /backup/db_all_$(date +%Y%m%d).sql
# 压缩备份
mysqldump -u用户名 -p密码 数据库名 | gzip > /backup/db_数据库名_$(date +%Y%m%d).sql.gz
# Nginx配置
tar -czpf /backup/nginx_conf_$(date +%Y%m%d).tar.gz /etc/nginx/
# PHP配置
tar -czpf /backup/php_conf_$(date +%Y%m%d).tar.gz /etc/php/
# MySQL配置
cp /etc/my.cnf /backup/my.cnf_$(date +%Y%m%d)
创建 /usr/local/bin/lnmp_backup.sh
文件:
#!/bin/bash
# LNMP全量备份脚本
# 定义变量
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
MYSQL_USER="root"
MYSQL_PASS="yourpassword"
# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE
# 备份网站文件
echo "开始备份网站文件..."
tar -czpf $BACKUP_DIR/$DATE/web.tar.gz /home/wwwroot/
# 备份数据库
echo "开始备份数据库..."
mysqldump -u$MYSQL_USER -p$MYSQL_PASS --all-databases > $BACKUP_DIR/$DATE/db_all.sql
gzip $BACKUP_DIR/$DATE/db_all.sql
# 备份配置文件
echo "开始备份配置文件..."
tar -czpf $BACKUP_DIR/$DATE/nginx_conf.tar.gz /etc/nginx/
tar -czpf $BACKUP_DIR/$DATE/php_conf.tar.gz /etc/php/
cp /etc/my.cnf $BACKUP_DIR/$DATE/
# 备份完成
echo "备份完成,备份文件存放在 $BACKUP_DIR/$DATE/"
设置定时任务(crontab -e):
# 每天凌晨3点执行备份
0 3 * * * /bin/bash /usr/local/bin/lnmp_backup.sh
# 解压备份文件到临时目录
tar -xzf /backup/web_20230101.tar.gz -C /tmp/
# 恢复文件
rsync -avz /tmp/home/wwwroot/ /home/wwwroot/
# 设置权限
chown -R www:www /home/wwwroot/
# 单数据库恢复
mysql -u用户名 -p密码 数据库名 < /backup/db_数据库名_20230101.sql
# 全库恢复
mysql -u用户名 -p密码 < /backup/db_all_20230101.sql
# 压缩备份恢复
gunzip < /backup/db_数据库名_20230101.sql.gz | mysql -u用户名 -p密码 数据库名
# Nginx配置恢复
tar -xzf /backup/nginx_conf_20230101.tar.gz -C /
# PHP配置恢复
tar -xzf /backup/php_conf_20230101.tar.gz -C /
# MySQL配置恢复
cp /backup/my.cnf_20230101 /etc/my.cnf
# 重启服务
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql
# 安装
yum install percona-xtrabackup
# 全量备份
innobackupex --user=root --password=yourpassword /backup/mysql/
# 初始化仓库
borg init --encryption=repokey /backup/borg_repo
# 创建备份
borg create /backup/borg_repo::lnmp-{now} /home/wwwroot /etc/nginx /etc/php
# 使用s3cmd同步备份到S3
s3cmd sync /backup/ s3://your-bucket/lnmp-backup/
通过以上方案,您可以确保LNMP服务器的数据安全,在出现故障时能够快速恢复服务。