在 Linux 下 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 的备份,通常分为 网站文件备份 和 数据库备份 两部分。下面给你一套生产环境常用、可自动化的备份方案。
/home/wwwroot/、/var/www/html).env、媒体资源)mysqldump 导出 SQL/etc/nginx//etc/php//usr/local/nginx/conf/(LNMP 一键包)tar -czvf www_backup_$(date +%F).tar.gz /home/wwwroot/
示例:
tar -czvf www_backup_2026-01-21.tar.gz /home/wwwroot/
mysqldump -u root -p dbname > dbname_$(date +%F).sql
mysqldump -u root -p --all-databases > all_db_$(date +%F).sql
/usr/local/mysql/bin/mysqldump -u root -p dbname > dbname.sql
tar -czvf nginx_conf_$(date +%F).tar.gz /etc/nginx/
或(LNMP 一键包):
tar -czvf nginx_conf.tar.gz /usr/local/nginx/conf/
mkdir -p /root/backup
cd /root/backup
创建脚本:
vi lnmp_backup.sh
内容示例:
#!/bin/bash
BACKUP_DIR="/root/backup"
DATE=$(date +%F)
MYSQL_USER="root"
MYSQL_PASS="数据库密码"
# 备份网站
tar -czvf $BACKUP_DIR/www_$DATE.tar.gz /home/wwwroot/
# 备份数据库
mysqldump -u$MYSQL_USER -p$MYSQL_PASS --all-databases > $BACKUP_DIR/db_$DATE.sql
# 删除 7 天前的备份
find $BACKUP_DIR -mtime +7 -name "*.tar.gz" -delete
find $BACKUP_DIR -mtime +7 -name "*.sql" -delete
⚠️ 注意:脚本中数据库密码明文存在,建议限制权限:
chmod 600 lnmp_backup.sh
crontab -e
每天凌晨 2 点备份:
0 2 * * * /bin/bash /root/backup/lnmp_backup.sh >> /root/backup/backup.log 2>&1
rsync -avz /root/backup/ user@backup-server:/data/backup/
scp /root/backup/*.tar.gz user@backup-server:/data/backup/
tar -xzvf www_2026-01-21.tar.gz -C /
mysql -u root -p < db_2026-01-21.sql
| 类型 | 建议 |
|---|---|
| 频率 | 每天 |
| 保留 | 7~30 天 |
| 存储 | 本地 + 远程 |
| 数据库 | 必须 SQL 导出 |
| 文件 | tar 打包 |
如果你愿意,我可以:
直接告诉我你的 系统版本 + 是否是 LNMP 一键包 即可。