The main configuration file for vsftpd is typically located at /etc/vsftpd.conf. To back it up, use the cp command to create a copy with a .bak extension (e.g., vsftpd.conf.bak). For a more comprehensive backup, include related files like /etc/vsftpd/ftpusers (lists banned users) and /etc/vsftpd/user_list (controls user access) using the tar command to compress them into a single archive.
Commands:
# Basic backup of the main config file
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
# Advanced backup of all config files (compressed)
sudo tar -czvf vsftpd_config_backup.tar.gz /etc/vsftpd.conf /etc/vsftpd/ftpusers /etc/vsftpd/user_list
Store the backup in a secure location (e.g., an external drive or cloud storage) to prevent data loss.
FTP user data is usually stored in home directories (e.g., /home/ftpuser for a user named ftpuser) or a common directory like /var/ftp/data (if configured). Use the tar command to compress and back up these directories. The -czvf flags create a gzipped tarball (-z), verbose output (-v), and preserve file permissions (-p).
Commands:
# Backup a single user's home directory
sudo tar -czvf ftpuser_backup.tar.gz /home/ftpuser
# Backup the common FTP data directory
sudo tar -czvf ftpdata_backup.tar.gz /var/ftp/data
For automation, integrate these commands into a script and schedule it with cron (e.g., run daily at 2 AM).
To restore configuration files, copy the backed-up files back to their original locations. If you used tar for compression, extract the archive to the /etc/vsftpd/ directory. After restoration, restart the vsftpd service to apply changes.
Commands:
# Restore a single config file
sudo cp /path/to/backup/vsftpd.conf.bak /etc/vsftpd.conf
# Restore multiple config files from a tarball
sudo tar -xzvf vsftpd_config_backup.tar.gz -C /
# Restart vsftpd to apply changes
sudo systemctl restart vsftpd
Always verify the integrity of the backup file before restoring (e.g., check file size and modification date).
To restore FTP user data, extract the backed-up tarball to the original directory (e.g., /home/ftpuser or /var/ftp/data). Ensure the target directory has the correct permissions (e.g., 755 for directories, 644 for files) to allow FTP access.
Commands:
# Restore a single user's home directory
sudo tar -xzvf ftpuser_backup.tar.gz -C /
# Restore the common FTP data directory
sudo tar -xzvf ftpdata_backup.tar.gz -C /
If the original directory structure was modified, adjust paths accordingly during extraction.
Regular backups are crucial to avoid data loss. Use cron to schedule automatic backups. Edit the crontab file with crontab -e and add a line to run your backup script at a specific time (e.g., daily at 2 AM).
Example Crontab Entry:
0 2 * * * /path/to/backup_vsftpd.sh
Sample Backup Script (backup_vsftpd.sh):
#!/bin/bash
# Define backup directory
BACKUP_DIR="/path/to/backup/location"
# Create backup directory if it doesn’t exist
mkdir -p "$BACKUP_DIR"
# Backup config files
sudo tar -czvf "$BACKUP_DIR/vsftpd_config_$(date +%Y%m%d).tar.gz" /etc/vsftpd.conf /etc/vsftpd/ftpusers /etc/vsftpd/user_list
# Backup user data
sudo tar -czvf "$BACKUP_DIR/vsftpd_data_$(date +%Y%m%d).tar.gz" /var/ftp/data
# Log backup completion
echo "Backup completed on $(date)" >> "$BACKUP_DIR/backup_log.txt"
Make the script executable with chmod +x /path/to/backup_vsftpd.sh.
sudo for backup/restore operations to ensure you have the necessary permissions.