FTP服务器如何备份与恢复
小樊
33
2025-12-17 01:30:48
FTP服务器备份与恢复实操指南
一 备份范围与策略
- 备份范围应覆盖:
- 数据目录(如:/var/ftp、/srv/ftp、或用户家目录下的 FTP 目录);
- 服务配置文件(如:vsftpd.conf、proftpd.conf、pure-ftpd.conf,以及用户控制文件如 /etc/vsftpd/user_list、/etc/vsftpd/ftpusers);
- 日志文件(如:/var/log/vsftpd/ 等);
- 如使用数据库,需单独备份数据库(如 MySQL/MariaDB、PostgreSQL)。
- 备份策略建议:
- 频率按业务变化设定(如:每日增量、每周全量);
- 采用3-2-1原则(3 份副本、2 种介质、1 份异地/离线);
- 传输与存储均启用加密(如 FTPS/SFTP/TLS);
- 定期做恢复演练与校验(如 md5sum/sha256sum 校验、在测试环境恢复)。
二 备份方法与常用命令
- 文件与目录备份
- 打包归档:
tar -czvf ftp_backup_$(date +%F).tar.gz /var/ftp /etc/vsftpd /var/log/vsftpd
- 增量同步(同一台机器或到备份机):
rsync -a --delete /var/ftp/ /backup/ftp/
- 远程拉取/回传(跨公网建议用 FTPS/SFTP 客户端)
- 拉取目录:
lftp -u user,pass ftp.example.com -e “mirror -c /remote/ftp/ /local/backup/; quit”
- 回传归档:
lftp -u user,pass ftp.example.com -e “put /local/backup/ftp_backup_$(date +%F).tar.gz -o /remote/backup/; quit”
- 自动化与调度
- 示例脚本(含日志与日期):
#!/bin/bash
BACKUP_DIR=“/backup/ftp”
DATE=$(date +%F)
mkdir -p “$BACKUP_DIR”
tar -czvf “$BACKUP_DIR/ftp_$DATE.tar.gz” /var/ftp /etc/vsftpd /var/log/vsftpd
md5sum “$BACKUP_DIR/ftp_$DATE.tar.gz” > “$BACKUP_DIR/ftp_$DATE.md5”
rsync -a --delete “$BACKUP_DIR/” backup@backup.example.com:/backup/ftp/
- 定时任务(每日 02:00):
0 2 * * * /usr/local/bin/backup_ftp.sh >> /var/log/backup_ftp.log 2>&1
- 数据库备份(如 FTP 服务依赖数据库)
- MySQL/MariaDB:
mysqldump -u root -p --single-transaction --routines --triggers --all-databases > /backup/mysql_$(date +%F).sql
- PostgreSQL:
pg_dumpall -U postgres > /backup/pg_$(date +%F).sql
以上命令可按需组合为“打包 + 校验 + 同步”的一体化流程。
三 恢复步骤与示例
- 准备与校验
- 选择恢复时间点(最近的全量或增量);
- 校验备份完整性:
md5sum -c /backup/ftp/ftp_2025-08-01.md5
- 停止服务(减少写入冲突)
systemctl stop vsftpd
- 恢复数据目录
- 从归档恢复:
tar -xzvf /backup/ftp/ftp_2025-08-01.tar.gz -C /
- 或用 rsync 回灌:
rsync -a --delete /backup/ftp/ /var/ftp/
- 恢复配置文件
cp /backup/ftp/etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf
视需要恢复用户控制文件与日志目录
- 启动服务并验证
systemctl start vsftpd
客户端连接测试、抽查关键文件数量与权限
- 数据库恢复(如适用)
- MySQL/MariaDB:
mysql -u root -p < /backup/mysql_2025-08-01.sql
- PostgreSQL:
psql -U postgres -f /backup/pg_2025-08-01.sql
- 回滚预案
保留最近 2–3 个备份周期,异常时先切回上一版本再排查。
四 不同 FTP 服务的要点
- vsftpd:配置常见路径 /etc/vsftpd/vsftpd.conf;数据目录常见 /var/ftp 或 /var/lib/vsftpd;用户控制文件 /etc/vsftpd/user_list、/etc/vsftpd/ftpusers;日志 /var/log/vsftpd/。
- ProFTPD:配置 /etc/proftpd/proftpd.conf;数据目录常见 /var/spool/proftpd。
- Pure-FTPd:配置 /etc/pure-ftpd/pure-ftpd.conf;数据目录常见 /var/spool/pure-ftpd 或 /var/lib/pure-ftpd。
恢复时按对应路径还原配置与数据,再启动服务验证。
五 最佳实践与排错清单
- 安全与合规:全程使用 FTPS/SFTP/TLS;备份文件与传输通道均加密;限制备份存储的访问权限;对敏感配置与数据库备份加密保存。
- 可用性与成本:实施 3-2-1 策略;定期清理过期备份;对大目录采用增量/差异策略减少时间与带宽占用。
- 可观测与演练:保留详细日志(如备份开始/结束时间、文件数量、校验结果);定期恢复演练并记录 RPO/RTO;监控磁盘、IO、网络与备份任务状态。
- 常见排错:
- 权限与属主错误:恢复后用 “ls -l” 校验,必要时 chown/chmod;
- 配置不生效:确认配置路径与服务单元匹配,重载或重启服务;
- 校验失败:重新传输并再次校验;
- 增量不一致:检查时间与保留策略,确保基线与增量顺序正确。