温馨提示×

Ubuntu LNMP如何备份和恢复

小樊
33
2025-12-14 06:55:22
栏目: 智能运维

Ubuntu LNMP 备份与恢复实操指南

一 备份范围与策略

  • 数据库:使用 mysqldumpMySQL/MariaDB 进行逻辑备份,建议按库或按表导出,并做压缩与保留多份历史。
  • 网站文件:备份 /var/www/ 下的全部站点代码与资源。
  • 配置与服务:备份 Nginx 配置(如 /etc/nginx/)、PHP-FPM 池配置(如 /etc/php/)、证书(如 /etc/letsencrypt/),以及必要的用户与权限、定时任务等。
  • 系统与引导:使用 Timeshift(推荐)、Clonezilladd 做系统级镜像/快照,便于整机回滚。
  • 存储与保留:备份应落盘到外置盘/对象存储,并保留至少7–30天的历史,定期做恢复演练验证可用性。

二 数据库备份与恢复

  • 备份(示例)
    • 单库:
      mysqldump -u root -pyour_password --single-transaction --routines --triggers dbname > /backup/dbname_$(date +%F_%H-%M-%S).sql
    • 全库:
      mysqldump -u root -pyour_password --single-transaction --routines --triggers --all-databases > /backup/all_databases_$(date +%F_%H-%M-%S).sql
    • 压缩:在上述命令后追加 | gzip > file.sql.gz;建议同时导出 mysql 系统库以保留用户与权限(谨慎覆盖目标库)。
  • 恢复
    • 未压缩:mysql -u root -pyour_password dbname < file.sql
    • 压缩:gunzip < file.sql.gz | mysql -u root -pyour_password dbname
    • 全库导入:mysql -u root -pyour_password < all_databases.sql
  • 要点:生产环境优先使用 –single-transaction 减少锁表;恢复前确认目标库存在或按需新建;导入后校验表与数据量。

三 网站文件与配置备份与恢复

  • 网站文件
    • 打包备份:tar -czf /backup/www_$(date +%F).tar.gz -C /var/www .
    • 增量/远程:rsync -aAXv --delete /var/www/ user@backup-host:/backup/www/
    • 恢复:tar -xzf www_YYYY-MM-DD.tar.gz -C /var/www;或 rsync -aAXv user@backup-host:/backup/www/ /var/www/
  • Nginx 与 PHP 配置
    • 备份:tar -czf /backup/nginx_$(date +%F).tar.gz /etc/nginx;tar -czf /backup/php_$(date +%F).tar.gz /etc/php;[ -d /etc/letsencrypt ] && tar -czf /backup/letsencrypt_$(date +%F).tar.gz /etc/letsencrypt
    • 恢复:tar -xzf nginx_YYYY-MM-DD.tar.gz -C /;tar -xzf php_YYYY-MM-DD.tar.gz -C /;证书同理。
  • 生效与校验:配置变更后执行 systemctl reload nginx;检查站点与日志是否正常。

四 自动化备份与保留策略

  • 示例脚本(可拆分或合并)
    • 数据库:
      #!/bin/bash
      DB_USER=“root”; DB_PASS=“your_password”; DB_NAME=“dbname”
      BACKUP_DIR=“/backup/mysql”; mkdir -p “$BACKUP_DIR”
      mysqldump -u “$DB_USER” -p"$DB_PASS" --single-transaction --routines --triggers “$DB_NAME” | gzip > “$BACKUP_DIR/${DB_NAME}$(date +%F%H-%M-%S).sql.gz”
    • 网站文件:
      #!/bin/bash
      tar -czf “/backup/www_$(date +%F).tar.gz” -C /var/www .
    • 配置:
      #!/bin/bash
      tar -czf “/backup/nginx_$(date +%F).tar.gz” /etc/nginx
      [ -d /etc/letsencrypt ] && tar -czf “/backup/letsencrypt_$(date +%F).tar.gz” /etc/letsencrypt
  • 定时任务(crontab -e)
    • 数据库:0 2 * * * /usr/local/bin/backup_mysql.sh
    • 网站文件:0 3 * * * /usr/local/bin/backup_www.sh
    • 配置:0 4 * * * /usr/local/bin/backup_nginx.sh
  • 保留策略:在脚本中加入按时间删除旧备份,例如 find /backup -name “*.sql.gz” -mtime +7 -delete;对网站与配置保留 30 天。
  • 安全:备份目录仅对 root 可读写;数据库密码建议使用 ~/.my.cnf 或凭据文件避免出现在命令行历史。

五 系统级备份与灾难恢复

  • Timeshift(推荐)
    • 安装:sudo apt install timeshift;选择 RSYNCBTRFS 模式,选择备份位置(外置盘),按需设置计划任务;恢复可在系统内选择快照点,系统无法启动时用 Live USB 启动后运行 Timeshift 进行还原。
  • Clonezilla
    • 制作 Clonezilla 启动盘;备份时选择源盘与目标盘/镜像文件;恢复时进入恢复模式,选择镜像与目标磁盘写入。
  • dd 镜像(谨慎)
    • 备份:sudo dd if=/dev/sda of=/backup/system_$(date +%F).img bs=4M status=progress
    • 恢复:sudo dd if=/backup/system_YYYY-MM-DD.img of=/dev/sda bs=4M status=progress
  • 注意:dd 要求目标盘容量不小于源盘;镜像还原会覆盖整盘,务必先确认分区与引导配置;操作前做好完整备份可启动介质准备。

0