备份 Debian 上 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 的核心目标是:
✅ 网站文件
✅ 数据库数据
✅ Nginx / PHP 配置
✅ 备份可恢复、可自动化
下面给你一套 实战级备份方案,从手动到自动方案都有。
一、备份前准备
先确认环境:
uname -a
lsb_release -a
nginx -v
mysql --version
php -v
建议备份目录:
mkdir -p /backup/lnmp/{www,db,conf}
二、备份网站数据(Nginx)
1️⃣ 默认网站目录
tar czf /backup/lnmp/www/www_$(date +%F).tar.gz /var/www
如果是多个站点:
tar czf /backup/lnmp/www/sites_$(date +%F).tar.gz /etc/nginx/sites-enabled /var/www
2️⃣ 保留 7 天
find /backup/lnmp/www -name "*.tar.gz" -mtime +7 -delete
三、备份数据库(MySQL / MariaDB)
✅ 推荐方式:mysqldump
1️⃣ 备份所有数据库
mysqldump -u root -p --all-databases > /backup/lnmp/db/all_$(date +%F).sql
2️⃣ 压缩
gzip /backup/lnmp/db/all_$(date +%F).sql
3️⃣ 只备份某库(更常用)
mysqldump -u root -p dbname > /backup/lnmp/db/dbname_$(date +%F).sql
4️⃣ 自动输入密码(可选)
不推荐明文,推荐
.my.cnf
vim ~/.my.cnf
[client]
user=root
password=你的密码
权限:
chmod 600 ~/.my.cnf
四、备份 Nginx / PHP 配置
1️⃣ Nginx
tar czf /backup/lnmp/conf/nginx_$(date +%F).tar.gz /etc/nginx
2️⃣ PHP(以 PHP 8.2 为例)
tar czf /backup/lnmp/conf/php_$(date +%F).tar.gz /etc/php/8.2
五、一键备份脚本(推荐)
1️⃣ 创建脚本
vim /usr/local/bin/backup_lnmp.sh
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR=/backup/lnmp
# 备份网站
tar czf $BACKUP_DIR/www/www_$DATE.tar.gz /var/www
# 备份数据库
mysqldump --all-databases | gzip > $BACKUP_DIR/db/db_$DATE.sql.gz
# 备份配置
tar czf $BACKUP_DIR/conf/nginx_$DATE.tar.gz /etc/nginx
tar czf $BACKUP_DIR/conf/php_$DATE.tar.gz /etc/php
# 清理旧备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
2️⃣ 赋权
chmod +x /usr/local/bin/backup_lnmp.sh
六、定时自动备份(cron)
crontab -e
每天凌晨 2 点:
0 2 * * * /usr/local/bin/backup_lnmp.sh > /var/log/lnmp_backup.log 2>&1
七、远程备份(强烈推荐)
1️⃣ rsync 到远程服务器
rsync -avz /backup/lnmp/ user@remote:/data/backup/debian_lnmp
2️⃣ SCP(简单)
scp -r /backup/lnmp user@remote:/backup/
八、恢复示例(重点)
恢复网站
tar xzf /backup/lnmp/www/www_2026-01-21.tar.gz -C /
恢复数据库
gunzip < db_2026-01-21.sql.gz | mysql -u root -p
恢复 Nginx
tar xzf nginx_2026-01-21.tar.gz -C /
systemctl restart nginx
九、备份策略建议 ✅
| 类型 | 频率 |
|---|---|
| 网站文件 | 每日 / 实时 |
| 数据库 | 每 6 小时 |
| 配置文件 | 每周 |
| 远程冷备 | 每日 |
十、我可以进一步帮你
你可以告诉我:
- ✅ Debian 版本(10 / 11 / 12)
- ✅ MySQL 还是 MariaDB
- ✅ 单站点还是多站点
- ✅ 是否需要 Docker / 云服务器备份
我可以 直接给你定制版备份脚本 + systemd timer 方案。
