温馨提示×

如何备份Linux SFTP数据

小樊
54
2026-08-15 19:34:34
栏目: 智能运维

在 Linux 上备份 SFTP 数据,通常就是备份 SFTP 用户可访问的文件目录,并结合权限、用户配置一起考虑。下面从常见场景到具体做法给你一个完整方案。


一、明确 SFTP 数据在哪里

SFTP 本身只是文件传输协议,数据实际存储在服务器磁盘上。

常见位置:

  • /home/用户名/
  • /data/sftp/用户名/
  • 自定义目录(如 /srv/sftp/)

先确认目录:

grep sftp /etc/passwd

或查看 SSH 配置:

grep -R "ChrootDirectory" /etc/ssh/

二、最常用:使用 rsync 备份(推荐 ✅)

1️⃣ 本地备份(同一台服务器)

rsync -avz /data/sftp/ /backup/sftp_$(date +%F)/

说明:

  • -a:保留权限、时间、软链接
  • -v:显示过程
  • -z:压缩(本地可省略)

✅ 适合:磁盘备份、快速恢复


2️⃣ 远程备份(另一台服务器)

rsync -avz /data/sftp/ user@backup-server:/backup/sftp/

或使用 SSH 指定端口:

rsync -avz -e "ssh -p 2222" /data/sftp/ user@backup-server:/backup/sftp/

✅ 适合:异地容灾


三、使用 scp 简单备份(小数据量)

scp -r /data/sftp/ user@backup-server:/backup/

⚠️ 缺点:

  • 不支持增量
  • 大数据量效率低

四、打包压缩备份(适合归档)

tar -czvf sftp_backup_$(date +%F).tar.gz /data/sftp/

恢复:

tar -xzvf sftp_backup_2026-01-21.tar.gz -C /

✅ 适合:定期归档、离线存储


五、保留权限和 SELinux(重要)

1️⃣ 保留权限

rsync 默认已保留,但确保不是 root → 非 root 再写回。

2️⃣ SELinux 环境(如 CentOS/RHEL)

rsync -avzX /data/sftp/ /backup/sftp/

六、备份 SFTP 用户和配置(常被忽略)

1️⃣ 备份 SSH 配置

cp /etc/ssh/sshd_config /backup/sshd_config

2️⃣ 备份用户和权限

getent passwd > /backup/passwd.bak
getent group > /backup/group.bak

如果是 SFTP-only 用户(nologin):

grep '/sbin/nologin' /etc/passwd

七、自动化备份(cron)

crontab -e

每天凌晨 2 点备份:

0 2 * * * rsync -avz /data/sftp/ /backup/sftp_$(date +\%F)/

八、安全建议(非常重要)

✅ 备份目录权限:

chmod 700 /backup

✅ 备份服务器不要开放 SFTP 给普通用户
✅ 备份完成后校验:

rsync -avnc /data/sftp/ /backup/sftp/

九、常见错误

❌ 只备份 /home,但 SFTP 实际在 /data/sftp
❌ 忘记备份权限,恢复后无法登录
❌ 使用 root 备份但恢复时权限错乱


十、总结(推荐方案)

场景 方案
日常备份 rsync
异地容灾 rsync over SSH
归档 tar.gz
自动化 cron + rsync

如果你愿意,可以告诉我:

  • ✅ 系统版本(Ubuntu / CentOS / Debian)
  • ✅ SFTP 是否使用 chroot
  • ✅ 数据量大小

我可以帮你写一套可直接用的备份脚本。

0 踩