Debian SFTP备份与恢复实操指南
一 环境准备与连接
二 数据备份方案
#!/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"
#!/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"
三 备份策略与保留
ssh sftpuser@host "find /backup -name 'backup_*.tgz' -mtime +7 -delete"
sha256sum "$ARCHIVE" >> /var/log/backup.sha256
四 恢复流程与验证
五 备份SFTP服务配置与用户数据
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