在 CentOS 上备份 FTP 服务器,通常可以从数据备份、配置备份、用户备份、以及自动化几个方面来做。下面以最常见的 vsftpd 为例说明(如果是 ProFTPD / Pure-FTPd 思路类似)。
FTP 用户上传的文件一般存放在某个目录,比如:
/var/ftp/home/ftpusertar -czvf ftpdata_$(date +%F).tar.gz /var/ftp
scp ftpdata_*.tar.gz backup@backupserver:/backup/ftp/
或使用 rsync:
rsync -avz /var/ftp/ backup@backupserver:/backup/ftp/
以 vsftpd 为例:
tar -czvf ftpconf_$(date +%F).tar.gz /etc/vsftpd
如果是 systemd 服务:
cp /usr/lib/systemd/system/vsftpd.service /backup/
getent passwd | grep ftp > ftpusers.txt
getent shadow | grep ftp >> ftpusers.txt
或全量备份用户相关文件:
tar -czvf ftpusers_$(date +%F).tar.gz /etc/passwd /etc/shadow /etc/group
常见文件:
/etc/vsftpd/virtual_users.txt/etc/pam.d/vsftpdtar -czvf ftp_virtual_$(date +%F).tar.gz \
/etc/vsftpd/virtual_users.txt \
/etc/pam.d/vsftpd \
/home/vuser
示例脚本 /root/ftp_backup.sh:
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR=/backup/ftp
mkdir -p $BACKUP_DIR
# 数据
tar -czf $BACKUP_DIR/ftpdata_$DATE.tar.gz /var/ftp
# 配置
tar -czf $BACKUP_DIR/ftpconf_$DATE.tar.gz /etc/vsftpd
# 用户
tar -czf $BACKUP_DIR/ftpusers_$DATE.tar.gz /etc/passwd /etc/shadow /etc/group
# 删除7天前备份
find $BACKUP_DIR -mtime +7 -name "*.tar.gz" -delete
赋予执行权限并加入定时任务:
chmod +x /root/ftp_backup.sh
crontab -e
每天凌晨 2 点执行:
0 2 * * * /root/ftp_backup.sh
tar -xzvf ftpdata_2026-01-21.tar.gz -C /
systemctl restart vsftpd
如果你能告诉我:
我可以给你更精确的备份方案。