CentOS 下使用 SFTP 进行数据备份与恢复
一 场景与准备
sudo systemctl start sshd && sudo systemctl enable sshdsudo firewall-cmd --permanent --add-port 22/tcp && sudo firewall-cmd --reload二 备份与恢复方法
scp -r /path/to/local/dir user@remote:/path/to/remote/dirscp -r user@remote:/path/to/remote/dir /path/to/local/dirsftp user@remote,用 put/get 上传/下载。rsync -avz --delete -e ssh /path/to/local/ user@remote:/path/to/remote/rsync -avz --delete -e ssh user@remote:/path/to/remote/ /path/to/local/tar -czvf backup_$(date +%F).tar.gz /path/to/dirscp backup_*.tar.gz user@remote:/backup/tar -xzvf backup_*.tar.gz -C /restore/dir三 自动化与定时任务
ssh-keygen -t rsa -b 2048ssh-copy-id user@remote/usr/local/bin/backup_sftp.sh:#!/bin/bash
SRC="/data"
DST="user@remote:/backup/data_$(date +%F)"
LOG="/var/log/sftp_backup.log"
rsync -avz --delete -e ssh "$SRC/" "$DST" >> "$LOG" 2>&1
echo "Backup finished at $(date)" >> "$LOG"
chmod +x /usr/local/bin/backup_sftp.sh
sudo crontab -e
# 每天 02:00 执行
0 2 * * * /usr/local/bin/backup_sftp.sh
四 迁移 SFTP 服务器与目录权限要点
sudo tar -czvf /backup/home_$(date +%F).tar.gz /homesudo cp /etc/ssh/sshd_config /backup/sshd_config_$(date +%F).baksudo tar -xzvf /backup/home_*.tar.gz -C /sudo cp /backup/sshd_config_*.bak /etc/ssh/sshd_configsudo systemctl restart sshdsudo groupadd sftpusers
sudo useradd -m -G sftpusers sftpuser
sudo passwd sftpuser
# 建议:/home/sftpuser 755 root:root;/home/sftpuser/files 700 sftpuser:sftpuser
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
sudo systemctl restart sshd。五 常见问题快速排查
systemctl status sshd,确保 22/TCP 放行,必要时查看日志 journalctl -u sshd 或 /var/log/secure。Subsystem sftp internal-sftp 或指向正确的 sftp-server 路径,修改后重启 sshd。