logo
0
1
WeChat Login
chore: 更新README文档,补充SYNC_MODE参数说明及使用示例

FTP Sync Docker Image

这个Docker镜像用于通过FTP方式将本地文件同步到远程FTP服务器。它使用lftp工具来执行高效的文件同步操作,支持并行传输和增量同步。

功能特点

  • 基于轻量级Alpine镜像
  • 使用lftp进行高效的文件传输
  • 支持增量同步(只传输变更的文件)
  • 支持并行传输加速
  • 支持删除远程服务器上已不存在的文件
  • 支持SSL/TLS加密连接

环境变量

镜像使用以下环境变量来配置FTP连接和同步行为:

环境变量描述是否必需默认值
FTP_HOSTFTP服务器主机名或IP地址(不带协议头)-
FTP_USERFTP用户名-
FTP_PASSFTP密码-
FTP_PORTFTP服务器端口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_HOST1FTP_USER1FTP_PASS1等是您在密钥仓库中定义的变量名。如果某些可选变量(如FTP_PORT1)未定义,将使用默认值(如FTP_PORT默认为21)。

构建镜像

在包含Dockerfile的目录中运行以下命令来构建Docker镜像:

docker build -t ftp-sync .

使用Docker Compose

创建一个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=mirror),同步操作会删除远程目录中不存在于本地目录的文件。如果不希望删除远程文件,可以设置SYNC_MODE=incremental来使用增量同步模式。
  • 为了安全起见,建议使用Docker secrets或环境变量文件来管理FTP凭据,而不是直接在命令行中提供。
  • 此镜像默认启用了SSL/TLS连接,但禁用了证书验证。如果需要更严格的安全设置,请修改sync.sh脚本中的相关配置。

许可证

MIT