tunasync官方仓库的文档写的非常简略,可以结合源码查看配置项目,这里简要列出文档未介绍的一些参数。
带*号的配置是数组,需要使用[“xxx”,“xxx”]格式配置
以下是worker.conf的配置
[global]
这是一个全局设置,对所有配置均生效mirror_dir: 设置全局的同步路径,各个同步项目会尝试在该目录下创建同名子文件夹并同步concurrent: 最大并发数量,即同时最多几个仓库同步(手动触发的不计)interval: 间隔时间,即同步完成后下次同步的时间,单位是分钟retry: 重试次数,在单次同步失败后最多尝试几次(无间隔时间)timeout: 超时时间,即单次同步总时长到达该时间后强制失败退出,单位是秒log_dir: 日志目录,可以用{{.Name}}设置目录名,使每个同步仓库的日志放在不同文件夹rsync_options*: 全局增加的同步参数(仅对于rsync同步模式生效)exec_on_success*: 同步成功后执行自定义的脚本exec_on_failure*: 同步失败后执行自定义的脚本(注意,若有重试次数,则每次失败尝试均会执行)dangerous_global_success_exit_codes*: 允许一些非致命的同步失败·视为成功(如 rsync 返回 23/24 等常见的“部分传输/不可读文件”等情况)dangerous_global_rsync_success_exit_codes*: 作用同上,但仅针对rsync同步方式有效
[manager]api_base: manager的访问端口,在manager.conf中配置api_base_list*: 如果有多个manager,在此处以数组方式填写,所有信息均会同步发送到各个manager,填写该选项将覆盖api_baseca_cert: 同上,证书设置(注意是公钥)
[zfs]
这是用来检查同步目录是否是通过zfs挂载了的。如果启用,那么会强制检查文件夹是否挂载到zpool上(使用mountpoint /path检查)。检查不通过的会直接同步失败,同时根据zpool参数输出建议创建的zpool名称,但不会自动创建对应的zpoolenable: 是否启用zpool: 建议挂载的zpool前缀名
[cgroup]
请看官方文档[btrfs_snapshot]
请看官方文档[docker]
此处为全局生效的docker配置选项enable: 是否开启dockervolumes: 挂载的卷Options: 默认选项
[include]: 包含各个仓库的conf文件,组成一个完整的配置include_mirrors*: 需要添加的文件路径,可以使用*来匹配,但是不能使用其他匹配,如**,示例:"/tmp/tunasync123/*.conf"
[[mirrors]]
各个仓库的具体设置,部分同名配置可省略使用全局配置。优先级:mirrors>globalname: 仓库名provider: 设置同步方式,以下分别介绍各自的配置provider = "command": 使用命令同步command: 同步脚本/命令
以下是一些环境变量的参数,将使用该参数内容通过环境变量传递到命令中TUNASYNC_MIRROR_NAME:nameTUNASYNC_UPSTREAM_URL:upstreamTUNASYNC_WORKING_DIR:mirror_dir、mirror_subdir: 组合生成,同时这是命令的工作目录(生成方式见介绍)
log_dir: 输出日志的目录,未设置则使用全局设置size_pattern: 正则匹配仓库体积,需要脚本输出体积大小的日志fail_on_match: 正则匹配错误信息,部分脚本同步失败时也是退出码为0,使用该参数匹配错误信息,匹配成功即为同步失败
provider = "rsync": 使用rsync
工作目录见下方mirror_dir、mirror_subdir介绍rsync_no_timeout: 布尔值,是否不限制rsync同步时间,一般不推荐开启rsync_timeout: 设置rsync最长的timeout时间(rsync参数的超时配置,非总时长)rsync_options*: 额外添加的其他参数``
exclude_file: 添加外部文本文件的列表排除同步目录,实际上仍然是拼接到rsync --exclude参数,也可以直接追加在rsync_options,也建议追加一个rsync_options = [ "--delete-excluded" ]删除被排除的文件rsync_override*: 直接覆盖tunasync的默认追加参数(默认参数见源码)rsync_override_only: 布尔值,是否只有rsync_override的参数。该参数不是rsync_override的启用开关。未启用时,会按照配置添加rsync_timeout、rsync_options等参数;启用时,不添加额外参数,仅有rsync_override的参数。请确定已知晓自己在做什么!
two-stage-rsync:
主要解决debian等大型项目,在同步时存在元数据文件与实际文件更新不一致的问题。分成两个阶段,先更新元数据,再更新其他文件stage1_profile: 设置同步方式,截止至2026.5,仅可设置为"debian"、"debian-oldstyle"
env: 额外的环境变量,示例:
# inline模式 [[mirrors]] ... env = { REPO = "/path", DEBUG = "1" } # expanded模式 [[mirrors]] ... [mirrors.env] REPO = "/path" DEBUG = "1"role: 对于同步无意义(此处存疑),仅在生成json时控制布尔值is_master,仅能填写master或slavemirror_dir: 同步的目录mirror_subdir: 同步的子目录
以下列出mirror_dir和mirror_subdir生成的工作目录情况interval: 见global设置retry: 见global设置timeout: 见global设置exec_on_success*: 见global设置exec_on_failure*: 见global设置success_exit_codes*: 见global设置,如果是rsync还会添加rsync的成功码,但建议rsync使用专用的rsync_success_exit_codes
以上设置为覆盖性设置,可省略使用全局配置。优先级:mirrors>globalexec_on_success_extra*: 同exec_on_success,但是在[global]exec_on_success基础上增加。建议mirror内exec_on_success_extra和exec_on_success二选一设置
以下两个不可同时启用exec_on_failure_extra*: 同上use_ipv6: 是否使用ipv6use_ipv4: 是否使用ipv4docker_image: docker镜像名称docker_volumes*: 在global的基础上,添加docker目录映射docker_options*: 在global的基础上,添加docker选项memory_limit: 限制的内存大小,只有启用docker或者cgroup时才能用。snapshot_path: 快照目录
默认评论
Halo系统提供的评论