在 Linux 下使用 SFTP 进行备份,常见做法是从本地备份到远程服务器,或从远程服务器拉取到本地。下面按场景给你讲清楚。
sftp user@remote_host
连接后:
put /local/path/backup.tar.gz /remote/backup/
✅ 适合偶尔手动备份
sftp user@remote_host
get /remote/path/backup.tar.gz /local/backup/
#!/bin/bash
HOST="remote_host"
USER="backup"
LOCAL="/data/backup.tar.gz"
REMOTE="/backup/"
sftp $USER@$HOST <<EOF
put $LOCAL $REMOTE
bye
EOF
⚠️ 需要配置 SSH 密钥登录,否则会卡在密码输入。
ssh-keygen -t rsa
ssh-copy-id user@remote_host
之后 sftp 就不需要密码了,适合定时任务。
crontab -e
每天凌晨 2 点备份:
0 2 * * * /scripts/sftp_backup.sh
rsync -avz /data/ user@remote:/backup/
优点:
scp backup.tar.gz user@remote:/backup/
mysqldump / pg_dump 再传tar -czf backup.tar.gz /databackup-$(date +%F).tar.gz
| 场景 | 推荐方式 |
|---|---|
| 手动偶尔备份 | sftp |
| 自动定时 | sftp + 脚本 + cron |
| 大量/频繁 | rsync |
| 单文件 | scp |
如果你愿意,可以告诉我:
我可以帮你写一套完整备份脚本。