温馨提示×

CentOS SFTP备份与恢复策略有哪些

小樊
45
2025-11-29 19:54:42
栏目: 智能运维

CentOS SFTP备份与恢复策略

一 策略总览与分层

  • 数据层:对SFTP根目录(如**/home/sftpuser或自定义的ChrootDirectory**)进行每日增量每周全量备份,保留至少7–30天,关键业务建议异地/云端留存一份副本。
  • 配置层:对**/etc/ssh/sshd_config/etc/ssh/sshd_config.d/**进行版本化备份,任何配置变更前后都应留痕。
  • 账号与授权:备份用户的authorized_keys、用户与组信息,确保恢复后权限与登录方式一致。
  • 验证与演练:定期做恢复演练完整性校验,确保备份可用;对数据库等应用数据,先按应用一致性要求备份,再纳入SFTP传输流程。
  • 工具选择:文件级同步用rsync(增量、保留属性),整包/镜像用tar(便于离线归档与传输)。

二 备份策略与实施步骤

  • 数据层备份(rsync增量)
    • 目标:将SFTP数据目录(如**/home/sftpuser**)增量同步到备份目录或远端备份主机。
    • 示例脚本:
      • 本地或挂载盘备份
        • #!/bin/bash
          • SOURCE=“/home/sftpuser”
          • BACKUP_DIR=“/backup/sftp”
          • mkdir -p “$BACKUP_DIR”
          • rsync -a --delete -v “$SOURCE/” “$BACKUP_DIR/current/”
          • tar czf “$BACKUP_DIR/archive/sftp_$(date +%F_%H-%M-%S).tgz” -C “$BACKUP_DIR/current” .
          • echo “Backup completed on $(date)” >> /var/log/sftp_backup.log
      • 远端备份(SSH)
        • rsync -a --delete -e ssh “$SOURCE/” user@backup-host:/backup/sftp/current/
    • 说明:-a保留权限/属主/时间,–delete保持镜像一致,适合日常增量备份。
  • 配置层备份(sshd_config与sshd_config.d)
    • 本地快照:
      • sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F_%H-%M-%S)
      • sudo cp -a /etc/ssh/sshd_config.d /etc/ssh/sshd_config.d.bak.$(date +%F_%H-%M-%S)
    • 远端归档:
      • sudo tar czf sshd_config_$(date +%F).tgz -C /etc/ssh sshd_config sshd_config.d
      • scp sshd_config_$(date +%F).tgz user@backup-host:/backup/ssh/
    • 变更后建议执行:sudo systemctl reload sshd(或restart)使配置生效。
  • 账号与授权备份
    • 备份用户与组:getent passwd > /backup/etc/passwd.bak;getent group > /backup/etc/group.bak
    • 备份公钥:rsync -a /home/*/.ssh/authorized_keys /backup/ssh/authorized_keys/
  • 调度与保留
    • 每日增量:0 2 * * * /usr/local/bin/backup_sftp.sh
    • 每周全量归档:0 3 * * 0 /usr/local/bin/backup_sftp_full.sh
    • 按“日增量保留7天、周全量保留4–12周”的策略清理旧备份(可用find或脚本实现)。

三 恢复策略与操作要点

  • 整库/目录恢复(rsync)
    • 将备份镜像还原至原位置:
      • rsync -a --delete /backup/sftp/current/ /home/sftpuser/
    • 若使用ChrootDirectory %h,确保上层目录(如**/home**)属主为root:root且权限755,用户目录属主为用户本身,否则internal-sftp可能无法登录。
  • 归档恢复(tar)
    • 进入目标父目录后解包:
      • cd /home && tar xzf /backup/sftp/archive/sftp_2025-04-01_02-00-00.tgz
  • 配置恢复
    • 覆盖还原:
      • sudo cp /backup/ssh/sshd_config.bak.YYYY-MM-DD /etc/ssh/sshd_config
      • sudo cp -a /backup/ssh/sshd_config.d.bak.YYYY-MM-DD /etc/ssh/sshd_config.d
    • 应用:sudo systemctl reload sshd;变更前建议备份当前配置并先在测试环境验证。
  • 账号与授权恢复
    • 复核/etc/passwd、/etc/group与/home/*/.ssh/authorized_keys的属主与权限,必要时使用vipw、vigr或集中化的LDAP/SSSD恢复账户信息。
  • 验证
    • 抽样校验关键文件数量/大小/校验和;用测试账号进行SFTP登录与上传/下载验证;检查应用是否能正常读取恢复后的数据。

四 高可用与监控建议

  • 多副本与离线:在本地盘 + 远端主机 + 云端对象存储形成至少2–3份副本,定期做离线/异地归档,降低单点风险。
  • 校验与演练:对备份做周期性恢复演练完整性校验(如校验和/清单比对),确保关键时刻可用。
  • 监控与告警:对备份任务退出码传输速率/耗时磁盘空间sshd服务状态设置监控与告警,异常及时处置。
  • 安全加固:备份传输与存放均使用加密通道/存储;限制备份访问权限;对敏感备份启用访问控制与审计

五 常见排错要点

  • 服务与端口:确认sshd运行并开机自启,防火墙放行22/TCP
    • systemctl status sshd;firewall-cmd --permanent --add-port=22/tcp && firewall-cmd --reload
  • SFTP子系统:/etc/ssh/sshd_config中配置Subsystem sftp internal-sftp或外部sftp-server,变更后reload/restart。
  • 权限模型:Chroot环境下,上层目录需root:root 755,用户目录为用户本人,避免因权限不当导致登录失败。
  • 日志排查:查看**/var/log/securejournalctl -u sshd**定位认证/权限/子系统错误。
  • 连接测试:使用sftp user@host进行连通性与登录验证。

0