这个Docker镜像用于通过FTP方式将本地文件同步到远程FTP服务器。它使用lftp工具来执行高效的文件同步操作,支持并行传输和增量同步。
镜像使用以下环境变量来配置FTP连接和同步行为:
| 环境变量 | 描述 | 是否必需 | 默认值 |
|---|---|---|---|
| FTP_HOST | FTP服务器主机名或IP地址(不带协议头) | 是 | - |
| FTP_USER | FTP用户名 | 是 | - |
| FTP_PASS | FTP密码 | 是 | - |
| FTP_PORT | FTP服务器端口 | 否 | 21 |
| FTP_REMOTE_DIR | 远程FTP服务器上的目标目录 | 否 | / |
| LOCAL_DIR | 本地源目录(容器内) | 否 | /data |
| SYNC_MODE | 同步模式(可选值:incremental或mirror) | 否 | mirror |
Docker使用(海外用户去掉docker.cnb.cool):
docker run --rm \
-e FTP_HOST=ftp.example.com \
-e FTP_USER=username \
-e FTP_PASS=password \
-e FTP_PORT=FTP端口(可选) \
-e FTP_REMOTE_DIR=远程目录(可选) \
-e LOCAL_DIR=本地目录(可选,默认为/data) \
-e SYNC_MODE=incremental(增量同步模式)或mirror(全镜像同步模式,默认) \
-v /path/to/local/files:/data \
docker.cnb.cool/sdcom/ftp_sync_server:latest
CNB使用方法1:
push:
ftp_sync:
stages:
- name: FTP同步
# 导入FTP配置信息
# 密钥文件应包含以下环境变量:
# FTP_HOST: FTP服务器地址(不带协议头)
# FTP_USER: FTP用户名
# FTP_PASS: FTP密码
# FTP_PORT: FTP端口(可选)
# FTP_REMOTE_DIR: 远程目录(可选)
# LOCAL_DIR: 本地目录(在CNB使用用需要定义为/workspace)
# SYNC_MODE: 同步模式(可选,可选值:incremental或mirror,默认为mirror)
imports: your-ftp-config-path # 替换为您的密钥仓库路径
image: docker.cnb.cool/sdcom/ftp_sync_server:latest
script: bash /usr/local/bin/sync.sh
CNB使用方法2:
在多个仓库使用的时候,可能会出现多个不重复的信息,可以使用以下调用方法:
push:
ftp_sync:
stages:
- name: FTP同步
# 导入FTP配置信息
# 和刚刚一样,添加服务器配置
imports: your-ftp-config-path # 替换为您的密钥仓库路径
image: docker.cnb.cool/sdcom/ftp_sync_server:latest
script: |
env FTP_HOST=${FTP_HOST1} \
FTP_USER=${FTP_USER1} \
FTP_PASS=${FTP_PASS1} \
FTP_PORT=${FTP_PORT1:-21} \
FTP_REMOTE_DIR=${FTP_REMOTE_DIR1:-/} \
LOCAL_DIR=${LOCAL_DIR1:-/workspace} \
SYNC_MODE=${SYNC_MODE1:-mirror} \
bash /usr/local/bin/sync.sh
其中,FTP_HOST1、FTP_USER1、FTP_PASS1等是您在密钥仓库中定义的变量名。如果某些可选变量(如FTP_PORT1)未定义,将使用默认值(如FTP_PORT默认为21)。
在包含Dockerfile的目录中运行以下命令来构建Docker镜像:
docker build -t ftp-sync .
创建一个docker-compose.yml文件:
version: '3'
services:
ftp-sync:
build: .
environment:
- FTP_HOST=ftp.example.com
- FTP_USER=username
- FTP_PASS=password
- FTP_REMOTE_DIR=/public_html
- SYNC_MODE=mirror # 可选:mirror(默认)或incremental
volumes:
- ./local_files:/data
然后运行:
docker-compose up
可以结合cron使用此镜像来定期同步文件。例如,在宿主机上创建一个cron作业:
0 * * * * docker run --rm -e FTP_HOST=ftp.example.com -e FTP_USER=username -e FTP_PASS=password -e SYNC_MODE=mirror -v /path/to/local/files:/data ftp-sync
可以根据需要将SYNC_MODE设置为mirror(默认,会删除远程不存在的文件)或incremental(只上传新文件,不删除远程文件)。
这将每小时执行一次同步。
SYNC_MODE=incremental来使用增量同步模式。sync.sh脚本中的相关配置。MIT