首页主机资讯Ubuntu FTP Server如何配置自动备份

Ubuntu FTP Server如何配置自动备份

时间2025-12-15 08:36:03发布访客分类主机资讯浏览323
导读:Ubuntu FTP Server 自动备份方案 一 备份策略与准备 明确备份对象: 配置文件(如:/etc/vsftpd/ 目录及用户列表);2 FTP数据目录(如:/var/ftp/ 或用户家目录);3 可选:整站或系统盘(仅在...

Ubuntu FTP Server 自动备份方案

一 备份策略与准备

  • 明确备份对象:
    1. 配置文件(如:/etc/vsftpd/ 目录及用户列表);2) FTP数据目录(如:/var/ftp/ 或用户家目录);3) 可选:整站或系统盘(仅在必要时)。
  • 选择传输方式:
    • 明文 FTP:部署简单,安全性低;
    • FTPS(显式/隐式 SSL):在 vsftpd 启用 SSL/TLS;
    • 更推荐 SFTP/RSYNC over SSH:加密、密钥认证、脚本更简单。
  • 准备环境:安装必要工具(如 lftp、证书等),规划本地/远程备份目录保留周期,并准备日志目录。上述配置文件与数据目录的备份方法见下文脚本示例。

二 方案一 本机打包 + 定时上传到远程 FTP/FTPS(适合已有 FTP 服务)

  • 安装 lftp(支持 FTP/FTPS 与镜像同步):sudo apt-get install -y lftp
  • 创建备份脚本(示例为每天本地打包并增量上传到远程 FTP/FTPS):
#!/usr/bin/env bash
set -Eeuo pipefail

# 配置
FTP_HOST="ftp.example.com"
FTP_USER="backup"
FTP_PASS="YourStrongPass!"
FTP_REMOTE_DIR="/backups/ftpdata"
LOCAL_BACKUP_DIR="/backup/ftp"
DATE=$(date +%F_%H-%M-%S)
TAR_FILE="$LOCAL_BACKUP_DIR/ftpdata_$DATE.tar.gz"
LOG_FILE="/var/log/ftp_backup.log"

# 初始化
mkdir -p "$LOCAL_BACKUP_DIR"
exec >
    >
    "$LOG_FILE" 2>
    &
    1

# 1) 本地打包
echo "[$DATE] 开始打包 $FTP_REMOTE_DIR ->
     $TAR_FILE"
tar czf "$TAR_FILE" -C "$(dirname "$FTP_REMOTE_DIR")" "$(basename "$FTP_REMOTE_DIR")"

# 2) 增量上传到 FTP/FTPS(mirror 反向:本地->
    远程)
echo "[$DATE] 开始上传到 $FTP_HOST:$FTP_REMOTE_DIR"
lftp -e "
  set ftp:ssl-force true;
    
  set ftp:ssl-protect-data true;
    
  open -u $FTP_USER,$FTP_PASS $FTP_HOST;
    
  mirror --reverse --delete --verbose --parallel=4 --allow-newer '$LOCAL_BACKUP_DIR/' '$FTP_REMOTE_DIR/';
    
  bye
"

# 3) 清理旧备份(保留最近7天)
find "$LOCAL_BACKUP_DIR" -name 'ftpdata_*.tar.gz' -mtime +7 -delete
echo "[$DATE] 完成,保留最近7天备份。"
  • 赋权并测试:chmod +x /usr/local/bin/ftp_backup.sh & & /usr/local/bin/ftp_backup.sh
  • 定时任务(每天 02:00):crontab -e 添加
    0 2 * * * /usr/local/bin/ftp_backup.sh
    说明:lftp 的 mirror --reverse 可实现“本地目录增量同步到远程 FTP/FTPS”,适合做自动备份与回滚。

三 方案二 从 FTP/FTPS 拉取数据到本机(适合无本机写权限或仅能被动拉取的场景)

  • 使用 lftp 的 mirror 正向同步(远程-> 本地),同样支持 FTPS 与增量:
#!/usr/bin/env bash
set -Eeuo pipefail

FTP_HOST="ftp.example.com"
FTP_USER="backup"
FTP_PASS="YourStrongPass!"
FTP_REMOTE_DIR="/data"
LOCAL_BACKUP_DIR="/backup/ftp_pull"
DATE=$(date +%F_%H-%M-%S)
LOG_FILE="/var/log/ftp_pull_backup.log"

mkdir -p "$LOCAL_BACKUP_DIR"
exec >
    >
    "$LOG_FILE" 2>
    &
    1

echo "[$DATE] 开始从 $FTP_HOST 拉取 $FTP_REMOTE_DIR ->
     $LOCAL_BACKUP_DIR"
lftp -e "
  set ftp:ssl-force true;
    
  set ftp:ssl-protect-data true;
    
  open -u $FTP_USER,$FTP_PASS $FTP_HOST;
    
  mirror --delete --verbose --parallel=4 --allow-newer '$FTP_REMOTE_DIR/' '$LOCAL_BACKUP_DIR/';
    
  bye
"

# 可选:本地保留策略
find "$LOCAL_BACKUP_DIR" -mindepth 1 -mtime +7 -delete
echo "[$DATE] 拉取完成,保留最近7天。"
  • 定时任务(每天 03:00):
    0 3 * * * /usr/local/bin/ftp_pull_backup.sh
    说明:mirror 默认“远程到本地”同步,配合 --delete 可保持两端一致,适合做拉取式备份。

四 仅备份 FTP 服务器配置与用户数据(轻量且常备)

  • 配置文件与用户列表备份(适合 vsftpd):
#!/usr/bin/env bash
set -Eeuo pipefail
DATE=$(date +%F)
OUT="/backup/vsftpd_conf_$DATE.tar.gz"
LOG="/var/log/vsftpd_backup.log"

exec >
    >
    "$LOG" 2>
    &
    1
echo "[$DATE] 备份 vsftpd 配置 ->
     $OUT"

tar czf "$OUT" -C /etc vsftpd /etc/vsftpd.* /etc/pam.d/vsftpd 2>
    /dev/null || true
chmod 600 "$OUT"

# 保留最近7天
find /backup -name 'vsftpd_conf_*.tar.gz' -mtime +7 -delete
echo "[$DATE] 完成。"
  • 数据目录备份(示例为 /var/ftp/):
#!/usr/bin/env bash
set -Eeuo pipefail
DATE=$(date +%F)
OUT="/backup/ftp_data_$DATE.tar.gz"
LOG="/var/log/ftp_data_backup.log"

exec >
    >
    "$LOG" 2>
    &
    1
echo "[$DATE] 备份 FTP 数据 ->
     $OUT"

tar czf "$OUT" -C /var/ftp . 2>
    /dev/null || true
chmod 600 "$OUT"

find /backup -name 'ftp_data_*.tar.gz' -mtime +7 -delete
echo "[$DATE] 完成。"
  • 定时任务(每天 01:3002:30 分别执行配置与数据):
    30 1 * * * /usr/local/bin/backup_vsftpd_conf.sh
    30 2 * * * /usr/local/bin/backup_ftp_data.sh
    说明:对配置文件可用 tar 打包,对数据目录可用 tarrsync 做增量同步。

五 安全加固与运维要点

  • 优先使用 SFTP/RSYNC over SSH(密钥登录、禁用口令),或在 vsftpd 启用 SSL/TLS(配置 ssl_enable、force_local_data_ssl、force_local_logins_ssl 与证书路径),避免明文 FTP 传输凭据与数据。
  • 凭据安全:脚本中避免明文密码,可使用 ~/.netrcSSH 密钥凭据文件权限 600;必要时用 pass 或 vault 管理。
  • 日志与告警:统一输出到 /var/log/,配合 logrotate 按日轮转;关键失败可接入邮件/企业微信/钉钉告警。
  • 保留与校验:设置保留周期(如 7/30 天),定期做恢复演练校验和检查(如 sha256sum)。
  • 连接与并发:lftp 的 mirror 支持 –parallel–allow-newer–exclude-glob 等参数,可按带宽与文件特征调优。
  • 若采用 FTPS,确保证书有效并开启 ssl-force/ssl-protect-data,避免降级到明文。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu FTP Server如何配置自动备份
本文地址: https://pptw.com/jishu/771309.html
如何在Ubuntu上设置FTP服务器端口转发 Debian上Hadoop作业调度怎么做

游客 回复需填写必要信息