温馨提示×

centos ftpserver备份恢复策略

小樊
36
2025-11-29 20:51:38
栏目: 智能运维

CentOS FTPServer 备份恢复策略

一 备份范围与频率

  • 备份范围建议覆盖以下四类关键资产:
    • 配置文件:如 /etc/vsftpd/(含 vsftpd.conf、user_list、ftpusers 等),确保服务与访问控制策略可还原。
    • 数据目录:如 /var/ftp/home/ftpuser,这是用户文件的核心存储位置。
    • 日志文件:如 /var/log/vsftpd,用于审计与问题定位。
    • 关联数据库:若 FTP 承载应用数据,需同步备份数据库(如 mysqldump 导出)。
  • 备份类型与频率建议:
    • 完整备份:每周一次,作为恢复基线。
    • 增量/差异备份:每日一次,缩短备份窗口并降低存储占用。
    • 自动化与监控:使用 cron 定时执行,记录日志并做成功/失败告警。
    • 多地备份与定期恢复演练:至少一份异地/离线副本,定期做恢复验证,确保可用性。

二 备份方法与工具

  • 文件与配置归档(tar)
    • 适用:一次性全量打包、便于传输与归档。
    • 示例:
      • 备份:tar -czvf ftp_backup_$(date +%F).tar.gz /etc/vsftpd /var/ftp /var/log/vsftpd
      • 恢复:tar -xzvf ftp_backup_YYYY-MM-DD.tar.gz -C /
  • 增量/差异同步(rsync)
    • 适用:日常增量备份、目录一致性保持。
    • 示例:
      • 本地/远程增量:rsync -avz --delete /var/ftp/ backup@host:/backup/ftp/
      • 恢复:rsync -av /backup/ftp/ /var/ftp/
  • 系统/分区镜像(dd)
    • 适用:整机/分区级灾难恢复基线(注意停机与容量匹配)。
    • 示例:
      • 备份:dd if=/dev/sda of=/backup/sda_$(date +%F).img bs=4M
      • 恢复:dd if=/backup/sda_YYYY-MM-DD.img of=/dev/sda bs=4M
  • 数据库备份
    • 适用:与 FTP 关联的业务数据一致性保障。
    • 示例:mysqldump -u user -p db > db_$(date +%F).sql
  • 自动化脚本与定时任务
    • 建议将备份命令写入脚本(含时间戳、日志、错误检查),通过 crontab 定时执行,并保留至少 7–30 天 的历史副本。

三 恢复流程与要点

  • 准备与评估
    • 明确恢复目标时间点(如最近完整备份 + 若干增量),准备回滚方案与验证步骤。
  • 停止服务
    • 为减少写入冲突,恢复前建议停止 FTP 服务:systemctl stop vsftpd(必要时先备份当前状态)。
  • 执行恢复
    • 配置恢复:将备份的 vsftpd 配置与用户列表还原至 /etc/vsftpd/
    • 数据恢复:按备份方式执行
      • tar:tar -xzvf ftp_backup_YYYY-MM-DD.tar.gz -C /
      • rsync:rsync -av /backup/ftp/ /var/ftp/
    • 数据库恢复:mysql -u user -p db < db_YYYY-MM-DD.sql
  • 启动与验证
    • 启动服务:systemctl start vsftpd
    • 连通性与一致性校验:登录验证、抽样文件校验、日志检查、权限与属主核对。
  • 回滚与演练
    • 若异常,按备份时间点回滚;定期做恢复演练,确保流程与备份有效性。

四 安全与合规要点

  • 传输与存储安全
    • 备份链路优先使用 SFTP/RSYNC over SSH 等加密方式;离线/异地副本妥善管控访问权限。
  • 凭据与密钥管理
    • 避免将明文口令写入脚本或计划任务;使用 SSH 密钥、受限备份账号与最小权限策略。
  • 日志与审计
    • 保留关键操作与备份日志,定期审计;日志目录纳入备份范围。
  • 加密与合规
    • 对含敏感数据的备份进行加密存储;按行业/法规要求设置保留周期与处置策略。

五 示例脚本与定时任务

  • 示例备份脚本(/usr/local/bin/backup_ftp.sh)
    • 说明:打包配置、数据与日志,并 rsync 到远程备份主机;失败写日志并保留 7 天 历史。
    • 使用:chmod +x /usr/local/bin/backup_ftp.sh
#!/usr/bin/env bash
set -Eeuo pipefail

BACKUP_ROOT="/backup/ftp"
DATE=$(date +%F_%H%M%S)
LOG="$BACKUP_ROOT/backup_$DATE.log"
KEEP_DAYS=7

FTP_CONF="/etc/vsftpd"
FTP_DATA="/var/ftp"
FTP_LOG="/var/log/vsftpd"

REMOTE_USER="backup"
REMOTE_HOST="192.0.2.10"
REMOTE_DIR="/backup/ftp"

mkdir -p "$BACKUP_ROOT"

exec >"$LOG" 2>&1

echo "[$(date)] Start backup"

# 1) 打包
tar czf "$BACKUP_ROOT/ftp_full_$DATE.tar.gz" -C / \
  --exclude="$BACKUP_ROOT" \
  "$FTP_CONF" "$FTP_DATA" "$FTP_LOG" || {
  echo "Tar failed"; exit 1; }

# 2) 远程同步
rsync -avz --delete "$BACKUP_ROOT/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" || {
  echo "Rsync failed"; exit 1; }

# 3) 清理旧备份
find "$BACKUP_ROOT" -name "ftp_full_*.tar.gz" -mtime +$KEEP_DAYS -delete
find "$BACKUP_ROOT" -name "backup_*.log" -mtime +$KEEP_DAYS -delete

echo "[$(date)] Backup finished"
  • 定时任务(每天 02:00 执行)
    • 执行:crontab -e
    • 内容:0 2 * * * /usr/local/bin/backup_ftp.sh
  • 说明
    • 若需增量/差异策略,可在脚本中引入 rsync 增量 或配合 LVM 快照/rsnapshot 等工具实现。

0