在Ubuntu上备份vsftpd的完整步骤
备份vsftpd前,需确认以下关键路径(根据实际配置调整):
/etc/vsftpd/(主配置文件为vsftpd.conf,若有用户列表文件vsftpd.userlist也需备份);/home/ftpuser/(ftpuser为FTP用户名,可通过grep "^ftpuser:" /etc/passwd命令查询);/var/log/vsftpd/(默认日志文件为vsftpd.log,若未开启日志则无需备份)。使用tar命令打包/etc/vsftpd/目录(包含所有配置文件),生成压缩包便于存储:
sudo tar -czvf /path/to/backup/location/vsftpd_config_backup_$(date +%F).tar.gz /etc/vsftpd/ -c:创建新压缩包;-z:使用gzip压缩;-v:显示详细过程;-f:指定压缩包路径(含当前日期,如vsftpd_config_backup_2025-10-14.tar.gz)。使用rsync命令同步FTP用户目录到备份位置(保留文件属性且支持增量备份):
sudo rsync -av --delete /home/ftpuser/ /path/to/backup/location/ftpuser_data_backup/ -a:归档模式(保留权限、时间戳等);-v:显示详细过程;--delete:删除备份目录中源目录不存在的文件(保持完全一致)。若需保留FTP访问日志,复制日志文件到备份位置:
sudo cp /var/log/vsftpd.log /path/to/backup/location/vsftpd_log_backup_$(date +%F).log 通过cron作业实现每日自动备份,避免手动操作遗漏。
新建脚本文件(如/usr/local/bin/backup_vsftpd.sh),内容如下:
#!/bin/bash # 定义备份目录 BACKUP_DIR="/path/to/backup/location" # 创建备份目录(若不存在) mkdir -p "$BACKUP_DIR" # 备份配置文件(带日期) sudo tar -czvf "$BACKUP_DIR/vsftpd_config_backup_$(date +%F).tar.gz" /etc/vsftpd/ # 备份用户数据(带日期) sudo rsync -av --delete /home/ftpuser/ "$BACKUP_DIR/ftpuser_data_backup_$(date +%F)/" # 备份日志文件(带日期,若存在) if [ -f /var/log/vsftpd.log ]; then sudo cp /var/log/vsftpd.log "$BACKUP_DIR/vsftpd_log_backup_$(date +%F).log" fi # 删除7天前的旧备份(可选,节省空间) find "$BACKUP_DIR" -type d -name "ftpuser_data_backup_*" -mtime +7 -exec rm -rf {} \; find "$BACKUP_DIR" -type f -name "vsftpd_*.tar.gz" -mtime +7 -exec rm -rf {} \; find "$BACKUP_DIR" -type f -name "vsftpd_*.log" -mtime +7 -exec rm -rf {} \; echo "vsftpd backup completed on $(date)" >> "$BACKUP_DIR/backup_log.txt" sudo chmod +x /usr/local/bin/backup_vsftpd.sh 编辑当前用户的crontab文件:
crontab -e 添加以下行(每日凌晨2点执行备份):
0 2 * * * /usr/local/bin/backup_vsftpd.sh Ctrl+X→Y→Enter),cron会自动加载任务。sudo获取root权限,确保能访问所有目标文件;rsync命令支持增量备份,仅同步变化的文件,节省时间和存储空间;backup_log.txt(脚本生成的日志),确认备份是否成功执行。