SFTP数据备份实施指南
SFTP基于SSH协议,默认集成在OpenSSH服务器中,需先确保服务器安装并配置正确。
sudo apt-get update && sudo apt-get install openssh-serversudo yum install openssh-serversudo systemctl start sshd # 启动服务
sudo systemctl enable sshd # 设置开机自启
sftpuser):sudo adduser sftpuser,并设置强密码。/etc/ssh/sshd_config,添加以下内容:Match User sftpuser
ChrootDirectory /home/sftpuser # 限制用户只能访问其家目录
ForceCommand internal-sftp # 强制使用SFTP协议
AllowTcpForwarding no
X11Forwarding no
sudo systemctl restart sshd。通过命令行工具sftp交互式上传文件/目录:
sftp sftpuser@your_server_ip(输入密码或密钥认证)。cd /path/to/remote/backup(远程备份目录)。put /path/to/local/file(单个文件);put -r /path/to/local/dir(递归上传整个目录)。exit。rsync支持增量同步(仅传输变化部分),提升备份效率:
sudo apt-get install rsyncsudo yum install rsyncrsync -avz -e ssh /local/backup/dir/ sftpuser@your_server_ip:/remote/backup/dir/
参数说明:-a(归档模式,保留权限、时间戳等)、-v(详细输出)、-z(压缩传输)、-e ssh(使用SSH作为传输协议)。通过脚本实现无人值守备份,结合cron定时任务提升效率。
#!/bin/bash
# 定义变量
LOCAL_DIR="/path/to/local/backup" # 本地备份目录
REMOTE_USER="sftpuser" # SFTP用户名
REMOTE_HOST="your_server_ip" # 远程服务器IP
REMOTE_DIR="/path/to/remote/backup" # 远程备份目录
# 创建本地备份目录(若不存在)
mkdir -p "$LOCAL_DIR"
# 使用SFTP上传文件
sftp "$REMOTE_USER@$REMOTE_HOST" <<EOF
put -r "$LOCAL_DIR" "$REMOTE_DIR"
EOF
echo "[$(date)] Backup completed successfully." >> /var/log/sftp_backup.log
chmod +x backup.sh && ./backup.sh。编辑cron表(crontab -e),添加以下内容(每天凌晨2点执行):
0 2 * * * /path/to/backup.sh
tail -f /var/log/sftp_backup.log。paramiko库实现SFTP连接与文件传输(需安装pip install paramiko)。ssh-keygen生成密钥对,ssh-copy-id复制公钥至服务器),避免密码泄露。>> /var/log/sftp_backup.log),便于排查问题。