温馨提示×

Ubuntu系统下vsftp的备份与恢复

小樊
44
2025-12-26 04:12:05
栏目: 智能运维

Ubuntu 下 vsftpd 的备份与恢复

一 备份范围与准备

  • 明确需要保护的资产:配置文件、用户数据目录、用户账户信息、日志以及(若启用)SSL/TLS 证书。
  • 建议准备一个备份专用目录(如:/backup/vsftpd),并确保有充足的磁盘空间与备份介质的写权限。
  • 为降低备份期间的数据一致性风险,可选择在维护时段短暂停机或使用支持一致性的工具(如 rsync)进行热备份。

二 手动备份步骤

  • 配置文件
    • 主配置:/etc/vsftpd.conf
    • 可选列表:/etc/vsftpd.user_list/etc/vsftpd.chroot_list(若你的部署中使用了这些文件)
    • 命令示例:
      • sudo cp /etc/vsftpd.conf /backup/vsftpd/vsftpd.conf-$(date +%F)
      • sudo cp /etc/vsftpd.user_list /backup/vsftpd/vsftpd.user_list-$(date +%F) 2>/dev/null || true
      • sudo cp /etc/vsftpd.chroot_list /backup/vsftpd/vsftpd.chroot_list-$(date +%F) 2>/dev/null || true
  • 用户数据
    • 常见数据根目录:/home/ftp/var/ftp/var/www/html(以你的实际配置为准)
    • 命令示例(rsync 增量、可断点续传):
      • sudo rsync -a --delete /home/ftp /backup/vsftpd/home_ftp-$(date +%F)
      • sudo rsync -a --delete /var/ftp /backup/vsftpd/var_ftp-$(date +%F)
  • 用户与认证信息
    • 为便于在新机器上恢复系统账号,建议备份相关账户文件(谨慎处理、注意权限与合规):
      • sudo cp /etc/passwd /backup/vsftpd/passwd-$(date +%F)
      • sudo cp /etc/shadow /backup/vsftpd/shadow-$(date +%F)
      • sudo cp /etc/group /backup/vsftpd/group-$(date +%F)
      • sudo cp /etc/gshadow /backup/vsftpd/gshadow-$(date +%F)
  • 日志文件
    • 常见日志:/var/log/vsftpd.log/var/log/syslog(vsftpd 常写入 syslog)
    • 命令示例:
      • sudo cp /var/log/vsftpd.log /backup/vsftpd/vsftpd.log-$(date +%F) 2>/dev/null || true
  • 可选 SSL/TLS 证书
    • 若启用了 SSL/TLS,请一并备份证书与私钥(路径以你的配置为准,常见如:/etc/ssl/certs/vsftpd.pem/etc/ssl/private/vsftpd.key):
      • sudo cp /etc/ssl/certs/vsftpd.pem /backup/vsftpd/vsftpd.pem-$(date +%F) 2>/dev/null || true
      • sudo cp /etc/ssl/private/vsftpd.key /backup/vsftpd/vsftpd.key-$(date +%F) 2>/dev/null || true
  • 服务单元文件(可选)
    • 如需连同 systemd 单元一起迁移,可备份:/lib/systemd/system/vsftpd.service/etc/systemd/system/vsftpd.service(以实际存在为准)。

三 手动恢复步骤

  • 安装 vsftpd(目标机器)
    • sudo apt update && sudo apt install vsftpd
  • 停止服务
    • sudo systemctl stop vsftpd
  • 恢复配置文件
    • sudo cp /backup/vsftpd/vsftpd.conf-YYYY-MM-DD /etc/vsftpd.conf
    • 如存在用户列表或 chroot 列表,一并恢复(若你的配置需要):
      • sudo cp /backup/vsftpd/vsftpd.user_list-YYYY-MM-DD /etc/vsftpd.user_list
      • sudo cp /backup/vsftpd/vsftpd.chroot_list-YYYY-MM-DD /etc/vsftpd.chroot_list
  • 恢复用户数据
    • 以你的实际数据目录为准(以下为常见路径示例):
      • sudo rsync -a --delete /backup/vsftpd/home_ftp-YYYY-MM-DD/ /home/ftp/
      • sudo rsync -a --delete /backup/vsftpd/var_ftp-YYYY-MM-DD/ /var/ftp/
  • 恢复账户与认证信息(可选,谨慎)
    • 仅在全新系统或明确需要重建账户时执行;优先使用专用备份工具或域控/LDAP 等集中身份源。
      • sudo cp /backup/vsftpd/passwd-YYYY-MM-DD /etc/passwd
      • sudo cp /backup/vsftpd/shadow-YYYY-MM-DD /etc/shadow
      • sudo cp /backup/vsftpd/group-YYYY-MM-DD /etc/group
      • sudo cp /backup/vsftpd/gshadow-YYYY-MM-DD /etc/gshadow
    • 修复权限(以你的实际用户/组为准,示例用户为 ftpuser):
      • sudo chown -R ftpuser:ftpuser /home/ftp
  • 恢复日志(可选)
    • sudo cp /backup/vsftpd/vsftpd.log-YYYY-MM-DD /var/log/vsftpd.log
  • 恢复 SSL/TLS 证书(若启用)
    • sudo cp /backup/vsftpd/vsftpd.pem-YYYY-MM-DD /etc/ssl/certs/vsftpd.pem
    • sudo cp /backup/vsftpd/vsftpd.key-YYYY-MM-DD /etc/ssl/private/vsftpd.key
    • sudo chmod 600 /etc/ssl/private/vsftpd.key
  • 启动服务并验证
    • sudo systemctl daemon-reload
    • sudo systemctl start vsftpd
    • 检查状态:sudo systemctl status vsftpd
    • 如启用 TLS,确认端口 990/tcp 已放行,客户端以 FTPS 方式连接测试上传/下载。

四 自动化备份方案

  • 备份脚本示例(/usr/local/bin/backup_vsftpd.sh)
    • 说明:采用 rsync 进行增量备份;配置文件与证书单独拷贝;日志轮转由 logrotate 处理更稳妥。
    • 内容:
      • #!/usr/bin/env bash set -e BACKUP_DIR=“/backup/vsftpd” DATE=$(date +%F) mkdir -p “$BACKUP_DIR”

        配置文件

        sudo cp /etc/vsftpd.conf “$BACKUP_DIR/vsftpd.conf-$DATE” sudo cp /etc/vsftpd.user_list “$BACKUP_DIR/vsftpd.user_list-$DATE” 2>/dev/null || true sudo cp /etc/vsftpd.chroot_list “$BACKUP_DIR/vsftpd.chroot_list-$DATE” 2>/dev/null || true

        用户数据(按你的实际目录调整)

        sudo rsync -a --delete /home/ftp “$BACKUP_DIR/home_ftp-$DATE” sudo rsync -a --delete /var/ftp “$BACKUP_DIR/var_ftp-$DATE”

        账户与认证(可选,谨慎)

        sudo cp /etc/passwd “$BACKUP_DIR/passwd-$DATE” sudo cp /etc/shadow “$BACKUP_DIR/shadow-$DATE” sudo cp /etc/group “$BACKUP_DIR/group-$DATE” sudo cp /etc/gshadow “$BACKUP_DIR/gshadow-$DATE”

        SSL/TLS 证书(可选)

        sudo cp /etc/ssl/certs/vsftpd.pem “$BACKUP_DIR/vsftpd.pem-$DATE” 2>/dev/null || true sudo cp /etc/ssl/private/vsftpd.key “$BACKUP_DIR/vsftpd.key-$DATE” 2>/dev/null || true

        清理 30 天前的备份

        find “$BACKUP_DIR” -type f -mtime +30 -delete echo “Backup completed at $DATE”

  • 赋权与定时任务
    • chmod +x /usr/local/bin/backup_vsftpd.sh
    • 编辑定时任务:crontab -e
    • 示例(每天 02:00 执行):0 2 * * * /usr/local/bin/backup_vsftpd.sh
  • 远程备份(可选)
    • 将备份同步到远程主机(示例):
      • rsync -av --delete /backup/vsftpd/ user@remote:/backup/vsftpd/

五 迁移与验证要点

  • 迁移到新服务器
    • 在新机器安装 vsftpd,先恢复配置与数据,再恢复账户信息(如需),最后启动服务并逐项验证功能。
  • 防火墙与端口
    • 若启用 SSL/TLS,确保放行 990/tcp;必要时放行 20/tcp21/tcp(被动模式端口段由配置决定)。
  • 权限与所有权
    • 恢复后校正数据目录属主/属组(如:ftpuser:ftpuser),确保 vsftpd 配置中的 local_enable/write_enable 等选项与目录权限匹配。
  • 日志与连通性
    • 通过客户端测试上传/下载与(如启用)TLS 握手;查看 /var/log/vsftpd.log/var/log/syslog 排查问题。

0