CentOS SFTP数据备份实用方案
一 备份策略与准备
二 本机到本机的定时备份脚本
#!/bin/bash
# 备份源与目标
SRC="/home/sftpuser"
DST="/backup/sftp/$(date +%F)"
LOG="/var/log/sftp_backup.log"
# 创建目标目录
mkdir -p "$DST"
# 执行增量同步(保留属性,删除目标端多余文件)
rsync -a --delete "$SRC" "$DST"
# 同时备份配置与日志
cp -p /etc/ssh/sshd_config "$DST/"
cp -p /var/log/auth.log "$DST/"
# 记录日志
echo "Backup completed at $(date)" >> "$LOG"
0 2 * * * /usr/local/bin/backup_sftp.sh
说明:rsync 的 -a 归档模式可保留权限、时间戳等,–delete 让目标与源保持一致,适合做镜像备份。
三 本机到远程 SFTP 的备份脚本
#!/bin/bash
# 本地待备份目录
LOCAL_DIR="/home/sftpuser"
# 远程信息
REMOTE_USER="backupuser"
REMOTE_HOST="192.0.2.10"
REMOTE_DIR="/backup/incoming"
# 生成带时间戳的归档并上传
tar czf - -C "$LOCAL_DIR" . | sftp "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"
0 2 * * * /usr/local/bin/backup_to_sftp.sh
说明:通过 tar | sftp 流式上传,无需在本地落盘大文件;如需更稳健可改为先本地打包再 scp 或使用 rsync over SSH。
四 恢复与验证
rsync -a --delete /backup/sftp/2025-08-01/ /home/sftpuser/
sftp backupuser@192.0.2.10 <<'EOF'
cd /backup/incoming
get -r . /tmp/restore/
bye
EOF
# 或先下载再解包
# tar xzf /tmp/restore/backup.tar.gz -C /home/sftpuser
五 安全与运维建议