温馨提示×

CentOS怎么备份SFTP数据

小樊
48
2026-08-04 00:20:18
栏目: 智能运维

CentOS 上备份 SFTP 数据,通常就是备份 SFTP 用户目录、权限、配置文件和关键系统信息。下面给你一套实用、可落地的备份方案,适用于大多数生产环境。


一、明确 SFTP 数据在哪里

1️⃣ SFTP 用户数据目录(最重要)

常见路径:

/home/sftpuser
/var/sftp
/data/sftp

确认方式:

grep sftp /etc/passwd

二、备份 SFTP 数据(推荐方式)

✅ 方法一:使用 rsync(最推荐)

1️⃣ 本地备份

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

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

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

✅ 优点:

  • 增量备份
  • 保留权限、时间
  • 稳定可靠

✅ 方法二:使用 tar 打包备份

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

恢复:

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

⚠️ 注意:

  • tar 默认 不保留 SELinux 上下文
  • 大目录不建议频繁全量打包

三、备份 SFTP 相关配置(非常重要)

1️⃣ SSH / SFTP 配置

cp /etc/ssh/sshd_config /backup/sshd_config_$(date +%F)

2️⃣ 用户信息

getent passwd sftpuser > /backup/sftpuser.passwd
getent group sftpuser > /backup/sftpuser.group

3️⃣ 权限与目录结构

ls -lR /data/sftp > /backup/sftp_permission.txt

四、如果使用了 chroot(强烈建议一起备份)

常见 chroot 配置:

Match User sftpuser
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp

✅ 备份:

grep -A5 "sftp" /etc/ssh/sshd_config > /backup/sftp_chroot.txt

五、自动定时备份(生产必做)

1️⃣ 编写备份脚本

vi /usr/local/bin/backup_sftp.sh
#!/bin/bash
SRC="/data/sftp"
DST="/backup/sftp_$(date +%F)"
rsync -avz $SRC $DST
chmod +x /usr/local/bin/backup_sftp.sh

2️⃣ 加入 crontab

crontab -e

每天凌晨 2 点:

0 2 * * * /usr/local/bin/backup_sftp.sh

六、备份策略建议(最佳实践)

本地 + 异地

  • 本地:快速恢复
  • 远程:防服务器损坏

保留周期

find /backup -type d -mtime +30 -exec rm -rf {} \;

权限一致性 恢复时检查:

chown -R sftpuser:sftpuser /data/sftp

七、如果你用的是特殊场景

场景 建议
Docker SFTP 备份 volume
SELinux 开启 备份后 restorecon -Rv
大量小文件 rsync + 排除日志
云服务器 配合对象存储(S3 / OSS)

八、我可以帮你一步到位

你可以直接告诉我: 1️⃣ CentOS 版本(7 / 8 / Stream)
2️⃣ SFTP 目录路径
3️⃣ 是否使用 chroot
4️⃣ 是否需要自动清理、异地备份

我可以帮你 直接给出可执行的一整套备份方案

0