Debian SFTP如何备份与恢复数据
导读:Debian SFTP备份与恢复实操指南 一 环境准备与连接 安装客户端与服务器 本地执行:sudo apt-get update && sudo apt-get install -y openssh-client 远端...
Debian SFTP备份与恢复实操指南
一 环境准备与连接
- 安装客户端与服务器
- 本地执行:sudo apt-get update & & sudo apt-get install -y openssh-client
- 远端Debian执行:sudo apt-get update & & sudo apt-get install -y openssh-server
- 启动并检查SSH服务
- sudo systemctl start ssh;sudo systemctl status ssh
- 防火墙放行:sudo ufw allow 22/tcp;sudo ufw reload
- 使用密钥认证(推荐)
- 本地生成:ssh-keygen -t rsa -b 4096
- 分发公钥:ssh-copy-id user@remote_host
- 连接测试
- sftp user@remote_host(默认端口22)
二 数据备份方案
- 方案A 手工交互式SFTP
- 上传:put -r 本地目录 远程目录
- 下载:get -r 远程目录 本地目录
- 常用:ls、cd、rm、mkdir、exit
- 方案B 自动化脚本(密钥认证)
- 备份脚本示例(本地→远端)
#!/usr/bin/env bash set -Eeuo pipefail LOCAL_DIR="/data" REMOTE_USER="sftpuser" REMOTE_HOST="192.0.2.10" REMOTE_DIR="/backup" TS=$(date +%F_%H%M%S) ARCHIVE="/tmp/backup_${ TS} .tgz" mkdir -p "$LOCAL_DIR" tar czf "$ARCHIVE" -C "$LOCAL_DIR" . sftp "$REMOTE_USER@$REMOTE_HOST" < < EOF mkdir -p "$REMOTE_DIR" put "$ARCHIVE" "$REMOTE_DIR/" bye EOF echo "$(date): Uploaded $ARCHIVE -> $REMOTE_HOST:$REMOTE_DIR/" rm -f "$ARCHIVE" - 定时任务(每天02:00)
- crontab -e 添加:0 2 * * * /path/to/backup.sh
- 备份脚本示例(本地→远端)
- 方案C 远端→本地恢复脚本
#!/usr/bin/env bash set -Eeuo pipefail REMOTE_USER="sftpuser" REMOTE_HOST="192.0.2.10" REMOTE_FILE="/backup/backup_2025-09-01_020000.tgz" LOCAL_RESTORE="/restore/$(date +%F_%H%M%S)" mkdir -p "$LOCAL_RESTORE" sftp "$REMOTE_USER@$REMOTE_HOST" < < EOF get "$REMOTE_FILE" -o "$LOCAL_RESTORE/backup.tgz" bye EOF tar xzf "$LOCAL_RESTORE/backup.tgz" -C "$LOCAL_RESTORE" echo "$(date): Restored $REMOTE_FILE -> $LOCAL_RESTORE" - 方案D 使用SCP替代(更简洁)
- 上传:scp -r /path/to/dir user@host:/remote/dir
- 下载:scp -r user@host:/remote/file /local/dir
- 方案E 使用rsync over SSH(增量、断点续传)
- 本地→远端:rsync -avz -e ssh /data/ sftpuser@host:/backup/data/
- 远端→本地:rsync -avz -e ssh sftpuser@host:/backup/data/ /restore/data/
三 备份策略与保留
- 命名规范:包含日期时间,如 backup_2025-09-01_020000.tgz,便于排序与追溯
- 保留策略:上传成功后清理远端旧备份(示例保留7天)
ssh sftpuser@host "find /backup -name 'backup_*.tgz' -mtime +7 -delete" - 完整性校验:在脚本中加入校验(示例)
sha256sum "$ARCHIVE" > > /var/log/backup.sha256 - 日志与告警:记录关键步骤与结果,必要时接入监控/告警
四 恢复流程与验证
- 基本步骤
- 列出远端备份:sftp user@host;ls /backup
- 选择备份文件并下载(见方案C)
- 解压到目标目录并校验文件权限与数量
- 验证要点
- 校验和对比(与备份时生成的sha256一致)
- 抽样打开关键文件/数据库一致性检查
- 对应用自检(服务能否启动、页面能否访问、关键流程是否通过)
- 回滚预案
- 保留最近N份;异常时优先回滚至上一个已知良好版本
五 备份SFTP服务配置与用户数据
- 配置与密钥备份清单
- SSH服务配置:/etc/ssh/sshd_config
- 主机密钥:/etc/ssh/ssh_host_*(如 rsa_key、ecdsa_key、ed25519_key)
- 用户与认证:/etc/passwd、/etc/shadow(按需备份)
- SFTP用户目录:如 /home/sftpuser 或 Chroot 根目录
- 打包备份示例
sudo tar czvf /backup/sftp_config_$(date +%F).tgz \ /etc/ssh/sshd_config \ /etc/ssh/ssh_host_* \ /home/sftpuser - 恢复示例
sudo tar xzvf /backup/sftp_config_2025-09-01.tgz -C / sudo systemctl restart ssh - 安全建议
- 备份文件同样需要保护(最小权限、异地/离线存放)
- 变更前先在测试环境验证恢复流程
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian SFTP如何备份与恢复数据
本文地址: https://pptw.com/jishu/748089.html
