CentOS SFTP服务器备份与恢复指南
SFTP服务器的备份需覆盖核心数据与配置信息,具体包括:
/home/用户名(如/home/sftpuser),包含用户上传的所有文件;/etc/ssh/sshd_config(主配置文件,定义SFTP服务参数)、/etc/ssh/ssh_host_*(SSH主机密钥,用于客户端认证);/var/log/auth.log(CentOS 7及以下)或/var/log/secure(CentOS 8及以上),记录SFTP登录及操作日志。推荐使用rsync(高效同步,支持增量备份)或tar(归档压缩,便于存储):
.tar.gz),便于归档和异地存储。# 创建备份目录(如/backup/sftp)
sudo mkdir -p /backup/sftp
# 备份用户目录(如sftpuser的家目录)
sudo rsync -av --delete /home/sftpuser /backup/sftp/
# 备份SSH配置文件
sudo rsync -av /etc/ssh/sshd_config /backup/sftp/
sudo rsync -av /etc/ssh/ssh_host_* /backup/sftp/
-a(归档模式,保留权限、时间戳等)、-v(显示详细过程)、--delete(删除目标目录中源目录不存在的文件,保持一致性)。# 备份用户目录
sudo tar czvf /backup/sftp/home_backup_$(date +%F).tar.gz /home/sftpuser
# 备份SSH配置文件
sudo tar czvf /backup/sftp/sshd_config_backup_$(date +%F).tar.gz /etc/ssh/sshd_config
sudo tar czvf /backup/sftp/ssh_keys_backup_$(date +%F).tar.gz /etc/ssh/ssh_host_*
c(创建归档)、z(gzip压缩)、v(显示详细过程)、f(指定文件名,含日期便于区分)。通过cron定时任务定期执行备份脚本,例如每天凌晨2点备份:
# 编辑当前用户的crontab
sudo crontab -e
# 添加以下内容(根据实际路径修改)
0 2 * * * /bin/bash /path/to/backup_script.sh
backup_script.sh):#!/bin/bash
# 创建备份目录
mkdir -p /backup/sftp
# 使用rsync备份用户数据
rsync -av --delete /home/sftpuser /backup/sftp/
# 使用tar备份配置文件
tar czvf /backup/sftp/sshd_config_backup_$(date +%F).tar.gz /etc/ssh/sshd_config
tar czvf /backup/sftp/ssh_keys_backup_$(date +%F).tar.gz /etc/ssh/ssh_host_*
# 记录日志
echo "SFTP备份完成于 $(date)" >> /backup/sftp/backup.log
chmod +x /path/to/backup_script.sh
sudo systemctl stop sshd
# 使用rsync恢复(保留目标目录现有文件)
sudo rsync -av /backup/sftp/sftpuser/ /home/sftpuser/
# 或使用tar解压(覆盖目标目录)
sudo tar xzvf /backup/sftp/home_backup_$(date +%F).tar.gz -C /
# 恢复SSH主配置文件
sudo tar xzvf /backup/sftp/sshd_config_backup_$(date +%F).tar.gz -C /
# 恢复SSH主机密钥
sudo tar xzvf /backup/sftp/ssh_keys_backup_$(date +%F).tar.gz -C /
sudo systemctl start sshd
/etc/ssh/sshd_config中的参数(如ChrootDirectory、ForceCommand)已正确应用。chmod 700 /backup/sftp),防止未授权访问;/backup/sftp/backup.log),及时发现备份失败问题。