高防服务器SSH数据备份实操指南
一、备份范围与总体架构
- 明确要备份的数据:SSH 配置与密钥、系统关键目录、业务数据、数据库转储等。
- 建议采用“3-2-1”策略:至少保留3份副本、存放在2种不同介质、其中1份异地/离线。
- 架构选择:
- 备份机直连高防源机,通过 SSH/SCP/SFTP/rsync 拉取或推送数据(简单、通用)。
- 源机主动推送至备份机(适合源机在高防内、备份机在公网/内网隔离区)。
- 数据库先本地导出(如 mysqldump),再用 SSH 传输备份文件(解耦数据库与文件备份窗口)。
二、前置准备与免密登录
- 生成密钥对(在备份机或源机执行,推荐在备份机生成并分发公钥):
- 命令:ssh-keygen -t rsa -b 4096
- 分发公钥到高防源机(非交互式):
- 命令:ssh-copy-id -i ~/.ssh/id_rsa.pub user@高防IP -p 22
- 加固权限(源机):
- 目录:chmod 700 ~/.ssh
- 授权文件:chmod 600 ~/.ssh/authorized_keys
- 验证:ssh user@高防IP -p 22 "echo ok",确保无需口令即可登录。
三、常用备份方式与命令示例
- SCP 全量拷贝(适合一次性/小体量)
- 备份目录:scp -r -P 22 user@高防IP:/var/www /backup/host1_$(date +%F)
- 恢复目录:scp -r -P 22 /backup/host1_2025-11-13 user@高防IP:/var/www
- rsync 增量同步(推荐,高效、可校验)
- 拉取:rsync -aHAXz --delete -e "ssh -p 22" user@高防IP:/var/www/ /backup/host1_www/
- 推送:rsync -aHAXz --delete -e "ssh -p 22" /data/ user@高防IP:/backup/
- 说明:-a 归档、-H 保留硬链接、-A 保留 ACL、-X 保留扩展属性、-z 压缩;--delete 保持镜像一致(谨慎使用)。
- 压缩打包直传(CPU 换速度,适合带宽受限)
- 源机打包并推送:tar czf - /var/www | ssh -p 22 user@备份机 "tar xzf - -C /backup/host1_www/"
- 数据库先导出再备份(示例为 MySQL)
- 导出:ssh -p 22 user@高防IP "mysqldump -h 127.0.0.1 -u dbuser -p'DBPASS' --single-transaction --routines --triggers dbname" > /backup/dbname_$(date +%F).sql
- 传输:scp -P 22 /backup/dbname_*.sql user@异地机:/backup/
- 恢复:mysql -h 127.0.0.1 -u dbuser -p'DBPASS' dbname < dbname_2025-11-13.sql
- Windows 场景
- 使用 OpenSSH 客户端(Windows 10/11 或 Windows Server 2019+)执行 scp/sftp/ssh;或使用 MobaXterm/FinalShell 等一体化工具进行 SFTP/SSH 操作。
四、自动化与保留策略
- 定时任务(备份机执行)
- 每周日全量:0 3 * * 0 /usr/bin/rsync -aHAXz --delete -e "ssh -p 22" user@高防IP:/var/www/ /backup/host1_www/full_$(date +\%F)/
- 周一到周六增量:0 3 * * 1-6 /usr/bin/rsync -aHAXz --delete -e "ssh -p 22" user@高防IP:/var/www/ /backup/host1_www/incr_$(date +\%F)/
- 数据库每日导出:0 2 * * * ssh -p 22 user@高防IP "mysqldump -h 127.0.0.1 -u dbuser -p'DBPASS' --single-transaction dbname" > /backup/db_$(date +\%F).sql
- 保留与清理(示例:保留最近 7 天)
- find /backup/host1_www/ -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
- find /backup -name "db_*.sql" -mtime +7 -delete
- 日志与告警
- 在脚本中记录:echo "$(date) 备份完成" >> /var/log/backup.log
- 结合 cron 邮件或企业微信/钉钉机器人做失败告警。
五、高防与安全加固要点
- 加固 SSH
- 禁用口令登录,仅保留密钥:PasswordAuthentication no(在 /etc/ssh/sshd_config),重启 sshd;密钥登录更安全且便于自动化。
- 更改默认端口、限制登录用户、开启 Fail2ban、仅开放必要 IP 段访问。
- 传输与存储
- 全程使用 SSH 加密通道(SCP/SFTP/rsync over SSH);备份机与源机均做 最小权限 控制。
- 备份数据落盘后设置 不可变/只读快照(如 ZFS 快照、LVM 快照或云盘快照),防止勒索覆盖。
- 异地/离线副本定期做 恢复演练,校验 校验和/快照一致性。
- 合规与审计
- 记录备份与恢复操作日志,定期审查;对密钥实行 分权保管 与 定期轮换。