在 Ubuntu 上,通过 SFTP(SSH File Transfer Protocol) 备份数据,常见做法是从本地备份到远程服务器,或从远程服务器拉取到本地。下面按场景给你几种实用方法。
sftp 命令手动备份sftp user@remote_ip
进入后:
put -r /local/path /remote/backup/path
-r:递归上传目录退出:
bye
sftp user@remote_ip
get -r /remote/path /local/backup/path
rsync + SFTP(推荐 ✅)虽然 rsync 默认走 SSH,但本质和 SFTP 一样安全,且支持增量备份。
rsync -avz -e ssh /local/data/ user@remote_ip:/backup/data/
rsync -avz -e ssh user@remote_ip:/remote/data/ /local/backup/
参数说明:
-a:归档模式(保留权限、时间)-v:显示过程-z:压缩传输✅ 最推荐用于定期备份
lftp(脚本化 SFTP 备份)适合写脚本、定时任务。
sudo apt install lftp
lftp sftp://user:password@remote_ip <<EOF
mirror -R /local/data /remote/backup
bye
EOF
lftp sftp://user:password@remote_ip <<EOF
mirror /remote/data /local/backup
bye
EOF
⚠️ 注意:明文密码不安全,建议用 ~/.ssh/id_rsa 免密登录。
ssh-keygen
ssh-copy-id user@remote_ip
之后 SFTP / rsync 都不需要密码,方便自动化。
例如每天凌晨 2 点备份:
crontab -e
添加:
0 2 * * * rsync -az -e ssh /data/ user@remote_ip:/backup/ >> /var/log/backup.log
/home/var/www/etcmysqldump 再备份mysqldump -u root -p dbname > db.sql
rsync -az db.sql user@remote:/backup/
| 场景 | 推荐方式 |
|---|---|
| 临时手动 | sftp |
| 定期/大量 | rsync over SSH |
| 脚本自动化 | lftp |
| 安全 | SSH 密钥 |
如果你告诉我:
我可以帮你写完整备份脚本。