ubuntu

如何在Ubuntu上实现FTP服务器自动备份

小樊
35
2025-12-03 11:11:12
栏目: 云计算

在 Ubuntu 上实现 FTP 服务器自动备份

一 方案总览

二 准备与前提

三 备份脚本示例

#!/usr/bin/env bash
set -Eeuo pipefail

# 配置
HOST="ftp.example.com"
USER="ftpuser"
PASS="ftppass"
REMOTE_DIR="/data"
LOCAL_DIR="/backup/ftp_data"
LOG_FILE="/var/log/ftp_backup.log"

# 初始化
mkdir -p "$LOCAL_DIR"
exec >>"$LOG_FILE" 2>&1
echo "=== $(date '+%F %T') 开始备份 ==="

# 使用 lftp 镜像:--reverse 表示本地→远端为“反向”镜像(拉取),--delete 同步删除,--parallel 并发
lftp -u "$USER,$PASS" "$HOST" <<'EOF'
set ftp:ssl-allow no
mirror --reverse --delete --verbose --parallel=4 --allow-newer \
      --exclude-glob "*.tmp" --exclude-glob "*.log" \
      "$REMOTE_DIR" "$LOCAL_DIR"
quit
EOF

if (( $? == 0 )); then
  echo "$(date '+%F %T') 备份完成:$LOCAL_DIR"
else
  echo "$(date '+%F %T') 备份失败,请检查日志:$LOG_FILE"
  exit 1
fi
#!/usr/bin/env bash
set -Eeuo pipefail

FTP_HOST="ftp.example.com"
FTP_USER="ftpuser"
FTP_PASS="ftppass"
FTP_DIR="/backup_remote"
LOCAL_FILE="/backup/ftp_data_$(date +%F_%H%M%S).tar.gz"
LOG_FILE="/var/log/ftp_backup.log"

mkdir -p "$(dirname "$LOCAL_FILE")"
exec >>"$LOG_FILE" 2>&1
echo "=== $(date '+%F %T') 开始上传 ==="

# 先本地打包(示例:备份 /home/ftpuser 目录)
tar czf "$LOCAL_FILE" -C /home/ftpuser .

# 上传到 FTP
lftp -u "$FTP_USER,$PASS" "$FTP_HOST" <<EOF
cd "$FTP_DIR"
put "$LOCAL_FILE"
quit
EOF

if (( $? == 0 )); then
  echo "$(date '+%F %T') 上传完成:$LOCAL_FILE -> $FTP_DIR"
else
  echo "$(date '+%F %T') 上传失败"
  exit 1
fi

四 定时执行与看护

五 安全与维护建议

0
看了该问题的人还看了