如何在Ubuntu上使用SFTP进行备份
导读:在 Ubuntu 上使用 SFTP 进行备份 一 准备与连接方式 安装客户端:大多数 Ubuntu 已内置 SFTP 客户端。如需安装或补装,执行:sudo apt-get install openssh-client。 建立连接:使用命...
在 Ubuntu 上使用 SFTP 进行备份
一 准备与连接方式
- 安装客户端:大多数 Ubuntu 已内置 SFTP 客户端。如需安装或补装,执行:
sudo apt-get install openssh-client。 - 建立连接:使用命令
sftp username@remote_host,默认端口 22;也可在命令中指定端口:sftp -P 2222 username@remote_host。 - 基本交互:连接后可用
ls、cd、pwd浏览远程;get下载、put上传;exit退出。 - 目录传输:递归上传/下载目录使用
put -r/get -r。 - 图形化工具:如需可视化操作,可使用 FileZilla、WinSCP 等支持 SFTP 的客户端。
二 手动备份与恢复操作
- 本地 → 远程(上传备份)
- 交互式:
sftp user@host,进入交互后执行put -r /path/to/local/dir /remote/backup/。 - 非交互式(Here-document):
sftp user@host < < 'EOF' mkdir -p /remote/backup/2025-11-25 put -r /path/to/local/dir /remote/backup/2025-11-25 bye EOF
- 交互式:
- 远程 → 本地(下载恢复)
- 交互式:
get -r /remote/backup/2025-11-25 /path/to/restore/。 - 非交互式:
sftp user@host < < 'EOF' get -r /remote/backup/2025-11-25 /path/to/restore/ bye EOF
- 交互式:
- 说明:SFTP 本身不支持断点续传与增量同步;若需这些能力,可改用 rsync over SSH 或在脚本中自行实现校验与重试逻辑。
三 自动化备份脚本与定时任务
- 方式 A(SFTP 脚本 + cron)
#!/usr/bin/env bash set -Eeuo pipefail LOCAL_DIR="/path/to/local/data" REMOTE_USER="backupuser" REMOTE_HOST="your.server.ip" REMOTE_DIR="/remote/backup" LOG="/var/log/sftp_backup.log" TS=$(date +%F_%H-%M-%S) mkdir -p "$LOCAL_DIR" { echo "[$TS] Start backup to $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR" sftp "$REMOTE_USER@$REMOTE_HOST" < < EOF mkdir -p "$REMOTE_DIR/$TS" put -r "$LOCAL_DIR" "$REMOTE_DIR/$TS" bye EOF echo "[$TS] Backup completed." } > > "$LOG" 2> & 1- 赋权与定时:
chmod +x /usr/local/bin/sftp_backup.sh crontab -e # 每天 02:00 执行 0 2 * * * /usr/local/bin/sftp_backup.sh
- 赋权与定时:
- 方式 B(推荐)使用 rsync over SSH(具备增量、断点续传、权限与时间戳保留等优势)
# 本地 → 远程 0 2 * * * rsync -a -v -z --delete -e ssh /path/to/local/data/ backupuser@your.server.ip:/remote/backup/data/ # 远程 → 本地 0 3 * * * rsync -a -v -z --delete -e ssh backupuser@your.server.ip:/remote/backup/data/ /path/to/local/restore/ - 密钥认证(免密与更安全):
完成后即可在脚本与 cron 中无密码执行。ssh-keygen -t rsa -b 4096 -C "backup@$(hostname)" ssh-copy-id backupuser@your.server.ip
四 作为 SFTP 服务器接收备份的配置要点
- 安装服务:
sudo apt update & & sudo apt install openssh-server。 - 配置 SFTP(示例为仅允许 sftpusers 组使用 internal-sftp 并 chroot 到家目录):
确保包含:sudo nano /etc/ssh/sshd_configSubsystem sftp internal-sftp Match Group sftpusers ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no - 创建用户与目录权限:
sudo groupadd sftpusers sudo useradd -m -G sftpusers backupuser sudo passwd backupuser sudo chown root:root /home/backupuser sudo chmod 755 /home/backupuser # 备份数据目录放在子目录并赋权给该用户 sudo mkdir -p /home/backupuser/backup sudo chown backupuser:backupuser /home/backupuser/backup - 使配置生效:
sudo systemctl restart sshd。 - 防火墙放行:
sudo ufw allow 22/tcp。
五 安全与可靠性建议
- 优先使用 SSH 密钥认证,禁用密码登录(在
/etc/ssh/sshd_config设置PasswordAuthentication no并重启sshd)。 - 为备份用户配置 最小权限 与 chroot,仅授予备份目录写入权限。
- 保留多份历史备份(如按日期目录),并定期在本地或异机验证可恢复性。
- 为脚本输出日志并接入监控告警;对关键数据在传输前后做 校验(如 sha256sum)。
- 如需压缩归档再传输,可在脚本中使用
tar czf打包后再put,以减小体积与传输时间。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上使用SFTP进行备份
本文地址: https://pptw.com/jishu/755890.html
