CentOS系统下VSFTP的备份与恢复
小樊
35
2026-01-07 20:46:41
CentOS 下 VSFTP 的备份与恢复
一 备份范围与准备
- 备份对象应覆盖:配置文件、数据目录、用户与权限、日志、以及被动模式端口范围与防火墙策略。
- 建议准备:一台用于存放备份的远程主机或外置存储;具备 root 或 sudo 权限;备份窗口内尽量暂停写入或选择低峰时段。
- 关键认知:VSFTP 使用两条通道——控制通道 21/TCP,数据通道在主动模式由服务器用 20/TCP 主动连客户端,在被动模式由服务器开放一段高位端口(常见为 6000–7000)供客户端接入;若启用被动模式,需一并备份并恢复该端口范围与防火墙放行策略。
二 备份步骤
- 配置文件
- 核心配置位于 /etc/vsftpd/,建议打包备份整个目录:
- tar -czvf vsftpd_conf_$(date +%F).tar.gz /etc/vsftpd/
- 数据目录
- 本地用户数据通常在各用户的家目录(如 /home/ 下各用户);若使用匿名公开目录,常见为 /var/ftp/。建议按实际业务选择打包:
- tar -czvf vsftpd_data_$(date +%F).tar.gz /home/ftpuser /var/ftp
- 用户与权限
- 备份用户账号与组信息(用于恢复时核对一致性):
- getent passwd | grep ftp > ftp_users.txt
- getent group | grep ftp > ftp_groups.txt
- 日志文件
- 便于审计与问题定位,建议归档:
- tar -czvf vsftpd_logs_$(date +%F).tar.gz /var/log/vsftpd.log /var/log/xferlog 2>/dev/null || true
- 防火墙与被动端口
- firewalld:
- firewall-cmd --list-ports > firewalld_ports_$(date +%F).txt
- firewall-cmd --list-services >> firewalld_ports_$(date +%F).txt
- 若使用被动模式,记录端口范围(如 6000–7000),并在备份清单中注明,便于恢复时放行相同范围。
- 远程异地保存
- 将备份包与清单传至远程存储(示例为 SCP):
- scp vsftpd_*.tar.gz user@backup.example.com:/backup/ftp/$(date +%F)/
- 自动化与校验
- 建议用 cron 定时执行备份脚本,并在脚本中加入 sha256sum 校验与保留策略(如保留最近 7–30 天)。
三 恢复步骤
- 安装与基础准备
- 安装 VSFTPD:yum install -y vsftpd
- 恢复配置文件:tar -xzvf vsftpd_conf_YYYY-MM-DD.tar.gz -C /
- 恢复数据与权限
- 恢复数据:tar -xzvf vsftpd_data_YYYY-MM-DD.tar.gz -C /
- 如为本地用户,确保家目录属主属组正确(示例):chown -R ftpuser:ftpuser /home/ftpuser
- 恢复用户与组
- 对比备份清单(ftp_users.txt、ftp_groups.txt)与系统现状,必要时用 useradd/groupadd 补齐缺失账号或组,避免 UID/GID 冲突。
- 防火墙与被动端口
- firewalld:
- 按备份清单恢复端口与服务:firewall-cmd --permanent --add-service=ftp;firewall-cmd --permanent --add-port=6000-7000/tcp
- firewall-cmd --reload
- 启动与验证
- 启动服务:systemctl start vsftpd;systemctl enable vsftpd
- 验证要点:本地/匿名登录、上传/下载、目录切换、被动模式端口连通性(如用 telnet/curl 测试 21 与 6000–7000 区间)、日志是否正常写入。
四 常见场景与注意事项
- 匿名与本地用户
- 匿名访问常见根目录为 /var/ftp,公开上传目录通常为 /var/ftp/pub;恢复后注意目录权限与属主,否则易出现 550 无法写入等错误。
- chroot 与可写根目录
- 若启用了 chroot_local_user=YES,VSFTPD 出于安全检查默认不允许被禁锢目录可写;需在配置中增加 allow_writeable_chroot=YES 后再重启,否则用户可能无法登录或写入。
- 被动模式端口范围
- 若备份时配置了 pasv_min_port/pasv_max_port(如 6000–7000),恢复时务必在防火墙放行相同范围,否则数据通道将建立失败。
- SELinux 与权限问题
- 遇到“Permission denied/550 Failed to open file”等,除检查目录权限外,还需确认 SELinux 策略(必要时临时 setenforce 0 验证,再按策略永久调整)。
- 传输模式
- 备份/恢复大文件或压缩包时,优先使用二进制模式(FTP 客户端设置为 Binary),避免 ASCII 模式导致文件损坏。