debian

Debian LNMP如何备份与恢复数据

小樊
46
2025-12-22 16:30:43
栏目: 智能运维

Debian LNMP 备份与恢复实操指南

一 备份范围与准备

二 手动备份步骤

三 自动化备份脚本与定时任务

#!/usr/bin/env bash
set -Eeuo pipefail

BACKUP_DIR="/backup"
DATE=$(date +%F_%H%M%S)
MYSQL_USER="root"
MYSQL_PASS="YourStrongPassword"   # 建议使用 ~/.my.cnf 避免明文
DBS_TO_BACKUP=("db1" "db2")      # 留空则备份全部库

NGINX_CONF_DIR="/etc/nginx"
PHP_FPM_CONF_DIR="/etc/php/PHP_VERSION/fpm"
WEB_ROOT="/var/www"
LOG_DIR="/var/log"

mkdir -p "$BACKUP_DIR/mysql" "$BACKUP_DIR/nginx" "$BACKUP_DIR/php-fpm" "$BACKUP_DIR/www" "$BACKUP_DIR/logs"

# 1) MySQL
if [ ${#DBS_TO_BACKUP[@]} -eq 0 ]; then
  mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASS" --single-transaction --routines --triggers --all-databases \
    | gzip > "$BACKUP_DIR/mysql/all_databases_$DATE.sql.gz"
else
  for db in "${DBS_TO_BACKUP[@]}"; do
    mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASS" --single-transaction --routines --triggers "$db" \
      | gzip > "$BACKUP_DIR/mysql/${db}_$DATE.sql.gz"
  done
fi

# 2) Nginx
tar -czf "$BACKUP_DIR/nginx/nginx_$DATE.tar.gz" -C "$NGINX_CONF_DIR" .

# 3) PHP-FPM
tar -czf "$BACKUP_DIR/php-fpm/php-fpm_$DATE.tar.gz" -C "$PHP_FPM_CONF_DIR" .

# 4) 网站代码
tar -czf "$BACKUP_DIR/www/www_$DATE.tar.gz" -C "$WEB_ROOT" .

# 5) 日志
tar -czf "$BACKUP_DIR/logs/logs_$DATE.tar.gz" -C "$LOG_DIR" .

# 6) 清理 7 天前
find "$BACKUP_DIR" -type f -name "*.gz" -mtime +7 -delete

echo "Backup finished at $DATE"

四 恢复步骤

五 策略与最佳实践

0
看了该问题的人还看了