ustcmirror/lftpsynclftpsync镜像是一个基于lftp工具的轻量级文件同步解决方案,专为高效、灵活的跨服务器/协议文件镜像同步设计。该镜像集成lftp的核心功能,支持FTP、FTPS、HTTP、HTTPS、SFTP等多种文件传输协议,可实现断点续传、增量同步、定时任务等高级同步需求,广泛应用于开源软件镜像站点维护、服务器数据备份、跨环境文件分发等场景。
通过docker run命令直接触发单次同步任务,需指定源地址(SRC)、目标地址(DST)及必要的同步参数。
bashdocker run --rm \ -e SRC="[***]" \ # 源地址(支持多种协议) -e DST="/data/mirror" \ # 容器内目标路径(需挂载宿主机目录) -v /path/to/local/dst:/data/mirror \ # 挂载宿主机目录作为同步目标 ***/lftpsync:latest
bashdocker run --rm \ -e SRC="s[***]" \ # SFTP源地址(格式:s[***] -e DST="/data/mirror" \ -e SYNC_OPTS="-n -X *.log -P 5" \ # 同步选项:-n(增量)、-X(排除.log文件)、-P(5个并发连接) -v /path/to/ssh-key:/root/.ssh/id_rsa:ro \ # SFTP协议需挂载SSH私钥(只读权限) -v /path/to/local/dst:/data/mirror \ ***/lftpsync:latest
通过挂载crontab配置文件实现定时同步,配置格式遵循标准crontab语法,任务命令需调用内置的sync.sh脚本。
/host/crontab.txt)crontab# 每天凌晨2点执行同步(语法:分 时 日 月 周 命令) 0 2 * * * /sync.sh
bashdocker run -d \ --name lftpsync-cron \ -e SRC="[***]" \ # 上游Ubuntu镜像源 -e DST="/data/ubuntu-mirror" \ -e SYNC_OPTS="-c -n -L" \ # -c(断点续传)、-n(增量)、-L(跟随符号链接) -v /host/ubuntu-mirror:/data/ubuntu-mirror \ # 宿主机镜像存储目录 -v /host/crontab.txt:/etc/crontabs/root:ro \ # 挂载crontab配置(root用户) ***/lftpsync:latest
yamlversion: '3' services: lftpsync: image: ***/lftpsync:latest container_name: lftpsync restart: always environment: - SRC="[***]" # HTTPS源地址 - DST="/data/mirror" - SYNC_OPTS="-n -X .git -t 300" # 排除.git目录,超时300秒 - CRON_ENABLE="true" # 启用定时任务(默认true,单次同步设为false) volumes: - /local/mirror:/data/mirror # 本地存储目录 - ./crontab.txt:/etc/crontabs/root:ro # 定时任务配置 # SFTP协议需额外挂载SSH密钥(如使用SFTP源) # - ./ssh_key:/root/.ssh/id_rsa:ro
| 参数名 | 描述 | 示例值 |
|---|---|---|
SRC | 同步源地址(必填),格式:协议://[用户:密码@]主机[:端口]/路径 | s[***] |
DST | 容器内目标路径(必填),需通过-v挂载到宿主机 | /data/mirror |
SYNC_OPTS | lftp mirror命令选项,多个选项用空格分隔 | -c -n -X *.tmp -P 5(断点续传、增量、排除.tmp、5并发) |
CRON_ENABLE | 是否启用定时任务 | true(默认,启用)/false(单次同步) |
LFTP_TIMEOUT | 传输超时时间(秒) | 300(默认300秒) |
| 选项 | 描述 |
|---|---|
-c | 断点续传(继续中断的传输) |
-n | 增量同步(仅下载新文件或大小/时间变化的文件) |
-r | 递归同步子目录 |
-X <pattern> | 排除匹配模式的文件/目录(如-X *.log排除.log文件) |
-P <num> | 设置并发连接数(默认5) |
-L | 跟随符号链接(同步链接指向的实际文件) |
-t <sec> | 超时时间(秒) |
如需调整lftp全局配置(如代理、被动模式、重试次数等),可通过挂载/etc/lftp.conf文件实现。示例配置文件(custom-lftp.conf):
conf# 启用被动模式(FTP默认推荐) set ftp:passive-mode yes # 设置网络超时时间(秒) set net:timeout 300 # 设置最大重试次数 set net:max-retries 3 # 配置HTTP代理(如需通过代理访问源站) set proxy [***]
挂载配置文件启动容器:
bashdocker run --rm \ -v /path/to/custom-lftp.conf:/etc/lftp.conf:ro \ # 自定义lftp配置 -e SRC="[***]" \ -e DST="/data/mirror" \ -v /path/to/local/dst:/data/mirror \ ***/lftpsync:latest
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务