CentOS 中 VSFTP 备份策略
一 备份范围与保留策略
二 备份方法选型
三 自动化脚本与定时任务
#!/bin/bash
set -Eeuo pipefail
BACKUP_ROOT="/backup/vsftpd"
DATE=$(date +%F_%H%M%S)
CONF_DIR="/etc/vsftpd"
DATA_DIR="/var/ftp" # 按实际修改
LOG_DIR="/var/log/vsftpd"
KEEP_DAYS=7
mkdir -p "$BACKUP_ROOT"
# 打包配置与数据
tar czf "$BACKUP_ROOT/vsftpd_${DATE}.tar.gz" -C / "$CONF_DIR" "$DATA_DIR" "$LOG_DIR" 2>/dev/null
# 清理过期
find "$BACKUP_ROOT" -name "vsftpd_*.tar.gz" -mtime +$KEEP_DAYS -delete
echo "$(date) Backup finished: $BACKUP_ROOT/vsftpd_${DATE}.tar.gz"
0 2 * * * /usr/local/bin/vsftpd_backup.sh >> /var/log/vsftpd_backup.log 2>&1
#!/bin/bash
set -Eeuo pipefail
FTP_HOST="backup.example.com"
FTP_USER="ftpbackup"
FTP_PASS="YourStrongPass"
REMOTE_DIR="/vsftpd"
LOCAL_DIR="/var/ftp"
lftp -u "$FTP_USER","$FTP_PASS" "$FTP_HOST" <<EOF
set ftp:ssl-allow no
mirror --reverse --delete --verbose "$LOCAL_DIR" "$REMOTE_DIR"
bye
EOF
echo "$(date) Mirror to $FTP_HOST finished."
0 3 * * * /usr/local/bin/vsftpd_mirror.sh >> /var/log/vsftpd_mirror.log 2>&1
chmod +x /usr/local/bin/*.sh四 恢复流程与验证
systemctl stop vsftpdtar xzf /backup/vsftpd_YYYY-MM-DD_HHMMSS.tar.gz -C /systemctl start vsftpdtar xzf /backup/vsftpd_YYYY-MM-DD_HHMMSS.tar.gz -C /mirror 将远程目录拉回本地(方向为本地←远程)五 安全与运维要点
anonymous_enable=NOpasv_enable=YES、pasv_min_port=21100、pasv_max_port=21110,并在防火墙放行对应端口firewall-cmd --add-service=ftp --permanent 与 firewall-cmd --add-port=21100-21110/tcp --permanent,随后 firewall-cmd --reloadsetsebool -P ftp_home_dir on、allow_ftpd_full_access on),以匹配你的目录与权限模型