温馨提示×

怎样在Ubuntu上配置FTP自动备份

小樊
41
2025-09-21 21:26:32
栏目: 智能运维

在Ubuntu上配置FTP自动备份的完整步骤

1. 安装FTP服务器(以vsftpd为例)

首先确保系统已安装vsftpd(轻量级FTP服务器),通过以下命令安装:

sudo apt update
sudo apt install vsftpd

2. 配置FTP服务器

编辑vsftpd配置文件(/etc/vsftpd.conf),调整以下关键参数以保障安全性和功能性:

sudo nano /etc/vsftpd.conf

需设置的参数

  • listen=YES:启用FTP服务器监听(仅IPv4)。
  • listen_ipv6=NO:禁用IPv6(若无需IPv6)。
  • anonymous_enable=NO:禁止匿名用户登录(防止未授权访问)。
  • local_enable=YES:允许本地系统用户登录FTP。
  • write_enable=YES:允许用户上传/修改文件。
  • chroot_local_user=YES:将用户限制在其主目录(增强安全性,避免访问系统其他文件)。
  • allow_writeable_chroot=YES:允许chroot目录可写(若用户需要上传文件)。
  • xferlog_enable=YES:启用传输日志(记录上传/下载操作,便于排查问题)。

保存并退出编辑器后,重启vsftpd服务使配置生效:

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd  # 设置开机自启

3. 创建备份目录

选择本地或FTP服务器上的目录作为备份存储位置(以本地/backup/ftp为例):

sudo mkdir -p /backup/ftp
sudo chown ftpuser:ftpuser /backup/ftp  # 将目录所有者设为FTP用户(如ftpuser)
sudo chmod 755 /backup/ftp  # 设置目录权限(所有者可读写,其他用户只读)

4. 编写自动备份脚本

创建备份脚本(如/usr/local/bin/backup_ftp.sh),使用tar命令打包源目录并压缩为.tar.gz文件,同时添加日志记录和旧备份清理功能:

sudo nano /usr/local/bin/backup_ftp.sh

脚本内容示例(需替换SOURCE_DIR为实际源目录):

#!/bin/bash
# 定义变量
SOURCE_DIR="/path/to/your/data"  # 需备份的源目录(如/home/user/Documents)
BACKUP_DIR="/backup/ftp"         # 本地备份存储目录
DATE=$(date +"%Y%m%d_%H%M%S")    # 当前日期时间(用于生成唯一备份文件名)
BACKUP_FILE="$BACKUP_DIR/ftp_backup_$DATE.tar.gz"  # 备份文件名
LOG_FILE="/var/log/ftp_backup.log"  # 备份日志文件

# 记录备份开始时间
echo "===== 备份开始: $DATE =====" >> $LOG_FILE

# 执行备份(打包并压缩源目录)
tar -czvf $BACKUP_FILE $SOURCE_DIR 2>> $LOG_FILE  # 2>> 将错误信息追加到日志

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "备份成功: $BACKUP_FILE" >> $LOG_FILE
else
    echo "备份失败,请检查日志" >> $LOG_FILE
fi

# 删除7天前的旧备份(保留最近7天)
find $BACKUP_DIR -type f -name "ftp_backup_*.tar.gz" -mtime +7 -exec rm -f {} \; 2>> $LOG_FILE
echo "旧备份清理完成" >> $LOG_FILE
echo "===== 备份结束: $(date +"%Y-%m-%d %H:%M:%S") =====" >> $LOG_FILE

保存并退出编辑器后,赋予脚本执行权限:

sudo chmod +x /usr/local/bin/backup_ftp.sh

5. 设置Cron定时任务

使用crontab配置定时执行备份脚本(如每天凌晨2点执行):

crontab -e

在文件末尾添加以下行(0 2 * * *表示每天凌晨2点):

0 2 * * * /usr/local/bin/backup_ftp.sh >/dev/null 2>&1

说明

  • >/dev/null 2>&1:将脚本的标准输出和错误输出重定向到空设备(避免cron发送不必要的邮件)。
    保存并退出编辑器,cron会自动加载新任务。

6. 验证配置

  • 手动测试脚本:运行/usr/local/bin/backup_ftp.sh,检查/backup/ftp目录是否生成备份文件,以及/var/log/ftp_backup.log是否有成功记录。
  • 检查Cron日志:通过grep CRON /var/log/syslog查看cron是否按计划执行了备份任务。
  • FTP连接测试:使用FTP客户端(如FileZilla)连接到服务器,确认备份文件可正常访问。

注意事项

  • 安全性:避免在脚本中直接写入FTP密码,建议使用.netrc文件存储凭据(需设置chmod 600 ~/.netrc),或采用SSH密钥认证(更安全)。
  • 日志监控:定期检查/var/log/ftp_backup.log,确保备份无错误;若备份失败,及时排查源目录权限、磁盘空间等问题。
  • 备份策略:可根据需求调整备份频率(如每周增量备份+每月全量备份)和保留时长(如保留30天备份),优化存储空间使用。
  • FTP加密:若需更安全的传输,建议配置FTPS(FTP over SSL/TLS),生成SSL证书并修改vsftpd.conf中的ssl_enable=YES等参数。

0