Ubuntu vsftpd Backup and Recovery Guide
Configuration files are critical for restoring vsftpd’s functionality. Key files include the main config (vsftpd.conf), user lists (user_list, ftpusers), and service unit files.
cp to copy individual files to a backup directory (e.g., /etc/vsftpd.conf.bak).sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
sudo cp /etc/vsftpd.user_list /etc/vsftpd/user_list.bak
sudo cp /etc/vsftpd/ftpusers /etc/vsftpd/ftpusers.bak
/etc/vsftpd/, use tar to create a compressed archive. This ensures all related configs are backed up together.sudo tar -czvf vsftpd_config_backup.tar.gz /etc/vsftpd/
crontab -e and add:0 2 * * * sudo tar -czvf /path/to/backup/vsftpd_config_$(date +\%F).tar.gz /etc/vsftpd/
FTP data includes user home directories (e.g., /var/ftp/ for anonymous access or /home/ftpuser/ for individual users) and log files (e.g., /var/log/vsftpd.log).
tar to back up user data directories. Exclude unnecessary files (e.g., temporary files) to save space.sudo tar -czvf ftp_data_backup.tar.gz /var/ftp/ # For anonymous FTP
sudo tar -czvf user_data_backup.tar.gz /home/ftpuser/ # For individual users
sudo cp /var/log/vsftpd.log /path/to/backup/vsftpd_log_backup.log
rsync to back up only changed files since the last backup. This is efficient for large datasets.sudo rsync -av --delete /var/ftp/ /path/to/backup/ftp_incremental/
sudo rsync -av --delete /home/ftpuser/ /path/to/backup/user_incremental/
Restoring configs requires replacing existing files with backups and restarting the service.
vsftpd_config_backup.tar.gz), extract it to /etc/vsftpd/.sudo tar -xzvf vsftpd_config_backup.tar.gz -C /
vsftpd.conf.bak), copy them back to their original location.sudo cp /path/to/backup/vsftpd.conf.bak /etc/vsftpd/vsftpd.conf
sudo cp /path/to/backup/user_list.bak /etc/vsftpd/user_list
sudo chown -R root:root /etc/vsftpd/
sudo chmod -R 644 /etc/vsftpd/*
sudo systemctl restart vsftpd
Restoring data involves extracting backups to their original directories and setting proper permissions.
ftp_data_backup.tar.gz), extract to the target directory (e.g., /var/ftp/).sudo tar -xzvf ftp_data_backup.tar.gz -C /
user_data_backup.tar.gz), extract to the user’s home directory.sudo tar -xzvf user_data_backup.tar.gz -C /
ftpuser for user data) and permissions (755 for directories, 644 for files).sudo chown -R ftpuser:ftpuser /var/ftp/ # For anonymous FTP
sudo chown -R ftpuser:ftpuser /home/ftpuser/ # For individual users
sudo chmod -R 755 /var/ftp/
sudo chmod -R 644 /var/ftp/* # Adjust for files/directories as needed
backup_vsftpd.sh) to simplify execution. Example:#!/bin/bash
sudo systemctl stop vsftpd
sudo tar -czvf /path/to/backup/vsftpd_config_$(date +\%F).tar.gz /etc/vsftpd/
sudo tar -czvf /path/to/backup/ftp_data_$(date +\%F).tar.gz /var/ftp/
sudo systemctl start vsftpd
crontab -e. Example for daily 2 AM backups:0 2 * * * /path/to/backup_vsftpd.sh