CentOS上VSFTP备份与恢复策略
sudo systemctl stop vsftpdsudo systemctl start vsftpd。配置文件备份:
vsftpd的主配置文件为/etc/vsftpd/vsftpd.conf,相关依赖文件包括/etc/pam.d/vsftpd(PAM认证配置)、/etc/vsftpd/user_list(用户列表)、/etc/vsftpd/ftpusers(禁止FTP访问用户列表)。
sudo cp /etc/vsftpd/vsftpd.conf /backup/vsftpd.conf.baktar打包整个配置目录,保留文件结构:sudo tar -czvf /backup/vsftpd_config_$(date +%Y%m%d).tar.gz /etc/vsftpd/ /etc/pam.d/vsftpd。用户数据备份:
FTP用户数据默认存储在/var/lib/vsftpd/(用户虚拟目录)或/home/ftpuser/(本地用户家目录,需确认local_root配置)。
rsync(保留权限和时间戳):sudo rsync -av /var/lib/vsftpd/ /backup/vsftpd_data/tar打包:sudo tar -czvf /backup/vsftpd_data_$(date +%Y%m%d).tar.gz /var/lib/vsftpd/。日志文件备份(可选但重要):
日志文件记录FTP访问、传输记录,路径为/var/log/vsftpd.log(默认)或/var/log/xferlog(传输日志)。
sudo tar -czvf /backup/vsftpd_logs_$(date +%Y%m%d).tar.gz /var/log/vsftpd/。编写备份脚本:创建/usr/local/bin/backup_vsftpd.sh,内容如下:
#!/bin/bash
BACKUP_DIR="/backup/vsftpd_$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
tar -czvf "$BACKUP_DIR/config.tar.gz" /etc/vsftpd/ /etc/pam.d/vsftpd
rsync -av /var/lib/vsftpd/ "$BACKUP_DIR/data/"
tar -czvf "$BACKUP_DIR/logs.tar.gz" /var/log/vsftpd/
find "$BACKUP_DIR" -type f -mtime +7 -delete # 删除7天前的备份
echo "$(date): Backup completed to $BACKUP_DIR" >> /var/log/vsftpd_backup.log
赋予执行权限:sudo chmod +x /usr/local/bin/backup_vsftpd.sh。
设置定时任务:通过crontab -e添加每日凌晨2点执行:
0 2 * * * /usr/local/bin/backup_vsftpd.sh。
scp)或外部硬盘(如mount后复制),避免本地磁盘故障导致数据丢失。scp /backup/vsftpd_*.tar.gz user@remote_server:/remote/backup/。sudo systemctl stop vsftpd。配置文件恢复:
sudo tar -xzvf /backup/vsftpd_config_20250910.tar.gz -C /sudo cp /backup/vsftpd.conf.bak /etc/vsftpd/vsftpd.confsudo vsftpd /etc/vsftpd/vsftpd.conf(无报错则表示配置正确)。用户数据恢复:
sudo tar -xzvf /backup/vsftpd_data_20250910.tar.gz -C /rsync同步:sudo rsync -av /backup/vsftpd_data/ /var/lib/vsftpd//etc/vsftpd/vsftpd.conf中的local_root配置。日志文件恢复(可选):
sudo tar -xzvf /backup/vsftpd_logs_20250910.tar.gz -C /sudo systemctl restart rsyslog。sudo systemctl start vsftpdsudo systemctl status vsftpd(确保为“active (running)”)。