备份 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}
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
find /backup/lnmp/www -name "*.tar.gz" -mtime +7 -delete
mysqldumpmysqldump -u root -p --all-databases > /backup/lnmp/db/all_$(date +%F).sql
gzip /backup/lnmp/db/all_$(date +%F).sql
mysqldump -u root -p dbname > /backup/lnmp/db/dbname_$(date +%F).sql
不推荐明文,推荐
.my.cnf
vim ~/.my.cnf
[client]
user=root
password=你的密码
权限:
chmod 600 ~/.my.cnf
tar czf /backup/lnmp/conf/nginx_$(date +%F).tar.gz /etc/nginx
tar czf /backup/lnmp/conf/php_$(date +%F).tar.gz /etc/php/8.2
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
chmod +x /usr/local/bin/backup_lnmp.sh
crontab -e
每天凌晨 2 点:
0 2 * * * /usr/local/bin/backup_lnmp.sh > /var/log/lnmp_backup.log 2>&1
rsync -avz /backup/lnmp/ user@remote:/data/backup/debian_lnmp
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
tar xzf nginx_2026-01-21.tar.gz -C /
systemctl restart nginx
| 类型 | 频率 |
|---|---|
| 网站文件 | 每日 / 实时 |
| 数据库 | 每 6 小时 |
| 配置文件 | 每周 |
| 远程冷备 | 每日 |
你可以告诉我:
我可以 直接给你定制版备份脚本 + systemd timer 方案。