CentOSSFTP备份与恢复策略

一策略总览与分层

数据层:对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/”

tarczf“$BACKUP_DIR/archive/sftp_$(date+%F_%H-%M-%S).tgz”-C“$BACKUP_DIR/current”.

echo“Backupcompletedon$(date)”>>/var/log/sftp_backup.log

远端备份(SSH)

rsync-a--delete-essh“$SOURCE/”user@backup-host:/backup/sftp/current/

说明:-a保留权限/属主/时间,–delete保持镜像一致,适合日常增量备份。

配置层备份(sshd_config与sshd_config.d)

本地快照:

sudocp/etc/ssh/sshd_config/etc/ssh/sshd_config.bak.$(date+%F_%H-%M-%S)

sudocp-a/etc/ssh/sshd_config.d/etc/ssh/sshd_config.d.bak.$(date+%F_%H-%M-%S)

远端归档:

sudotarczfsshd_config_$(date+%F).tgz-C/etc/sshsshd_configsshd_config.d

scpsshd_config_$(date+%F).tgzuser@backup-host:/backup/ssh/

变更后建议执行:sudosystemctlreloadsshd(或restart)使配置生效。

账号与授权备份

备份用户与组:getentpasswd>/backup/etc/passwd.bak;getentgroup>/backup/etc/group.bak

备份公钥:rsync-a/home/*/.ssh/authorized_keys/backup/ssh/authorized_keys/

调度与保留

每日增量:02***/usr/local/bin/backup_sftp.sh

每周全量归档:03**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&&tarxzf/backup/sftp/archive/sftp_2025-04-01_02-00-00.tgz

配置恢复

覆盖还原:

sudocp/backup/ssh/sshd_config.bak.YYYY-MM-DD/etc/ssh/sshd_config

sudocp-a/backup/ssh/sshd_config.d.bak.YYYY-MM-DD/etc/ssh/sshd_config.d

应用:sudosystemctlreloadsshd;变更前建议备份当前配置并先在测试环境验证。

账号与授权恢复

复核/etc/passwd、/etc/group与/home/*/.ssh/authorized_keys的属主与权限,必要时使用vipw、vigr或集中化的LDAP/SSSD恢复账户信息。

验证

抽样校验关键文件数量/大小/校验和;用测试账号进行SFTP登录与上传/下载验证;检查应用是否能正常读取恢复后的数据。

四高可用与监控建议

多副本与离线:在本地盘+远端主机+云端对象存储形成至少2–3份副本,定期做离线/异地归档,降低单点风险。

校验与演练:对备份做周期性恢复演练与完整性校验(如校验和/清单比对),确保关键时刻可用。

监控与告警:对备份任务退出码、传输速率/耗时、磁盘空间、sshd服务状态设置监控与告警,异常及时处置。

安全加固:备份传输与存放均使用加密通道/存储;限制备份访问权限;对敏感备份启用访问控制与审计。

五常见排错要点

服务与端口:确认sshd运行并开机自启,防火墙放行22/TCP。

systemctlstatussshd;firewall-cmd--permanent--add-port=22/tcp&&firewall-cmd--reload

SFTP子系统:/etc/ssh/sshd_config中配置Subsystemsftpinternal-sftp或外部sftp-server,变更后reload/restart。

权限模型:Chroot环境下,上层目录需root:root755,用户目录为用户本人,避免因权限不当导致登录失败。

日志排查:查看**/var/log/secure或journalctl-usshd**定位认证/权限/子系统错误。

连接测试:使用sftpuser@host进行连通性与登录验证。