温馨提示×

Linux下LNMP如何备份

小樊
47
2026-07-23 05:20:30
栏目: 智能运维

在 Linux 下 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 的备份,通常分为 网站文件备份数据库备份 两部分。下面给你一套生产环境常用、可自动化的备份方案。


一、LNMP 需要备份哪些内容

1️⃣ 网站文件

  • 网站程序目录(如 /home/wwwroot//var/www/html
  • 上传文件、配置文件(如 .env、媒体资源)

2️⃣ 数据库

  • MySQL / MariaDB 数据
  • 建议用 mysqldump 导出 SQL

3️⃣ Nginx / PHP 配置(可选)

  • /etc/nginx/
  • /etc/php/
  • /usr/local/nginx/conf/(LNMP 一键包)

二、手动备份(适合临时备份)

1️⃣ 备份网站文件

tar -czvf www_backup_$(date +%F).tar.gz /home/wwwroot/

示例:

tar -czvf www_backup_2026-01-21.tar.gz /home/wwwroot/

2️⃣ 备份 MySQL 数据库

方法一:备份单个数据库

mysqldump -u root -p dbname > dbname_$(date +%F).sql

方法二:备份所有数据库

mysqldump -u root -p --all-databases > all_db_$(date +%F).sql

方法三:LNMP 一键包常用

/usr/local/mysql/bin/mysqldump -u root -p dbname > dbname.sql

3️⃣ 备份 Nginx 配置(可选)

tar -czvf nginx_conf_$(date +%F).tar.gz /etc/nginx/

或(LNMP 一键包):

tar -czvf nginx_conf.tar.gz /usr/local/nginx/conf/

三、自动备份(推荐 ✅)

1️⃣ 创建备份脚本

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

2️⃣ 添加定时任务(crontab)

crontab -e

每天凌晨 2 点备份:

0 2 * * * /bin/bash /root/backup/lnmp_backup.sh >> /root/backup/backup.log 2>&1

四、备份到远程(进阶 ✅)

1️⃣ 使用 rsync 同步到另一台服务器

rsync -avz /root/backup/ user@backup-server:/data/backup/

2️⃣ 使用 scp

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 一键包 给你定制脚本
  • ✅ 帮你做 Docker LNMP 备份方案
  • ✅ 给你一个 生产级自动备份 + 邮件/微信告警方案

直接告诉我你的 系统版本 + 是否是 LNMP 一键包 即可。

0