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/secure或journalctl -u sshd**定位认证/权限/子系统错误。
- 连接测试:使用sftp user@host进行连通性与登录验证。