增量同步
使用sync命令让本地源路径下的所有内容和OBS指定目标对象进行数据同步,使两边内容保持一致。
- 增量:依次比较源文件和目标对象,只上传存在变化的源文件。
- 同步:命令执行完成后,保证本地源路径是OBS指定目标桶的子集,即本地源路径下的所有文件均能在OBS指定目标桶中找到对应对象。
命令结构
health sync <src> <dest> [flags]
参数 |
简写 |
是否必选 |
说明 |
---|---|---|---|
src |
无 |
是 |
被同步的目录或文件。 |
destdir |
无 |
是 |
目的目录或者文件。 |
--type |
-H |
是 |
增量同步类型:copy/download/upload。 |
--crr |
-c |
否 |
复制时使用客户端跨区域复制模式,从通过数据流的方式从源桶直接复制数据到目标桶,且两个桶可以是任意两个OBS服务的桶。 若设置了该参数,必须确保更新了配置文件中客户端跨区域复制的相关配置信息,具体可参考更新配置文件。复制时源桶对应的配置信息为配置文件中的:akCrr/skCrr/tokenCrr/endpointCrr,目标桶对应的配置信息为配置文件中的:ak/sk/token/endpoint。 开启该模式后,会占用上传和下载的双向带宽。 |
--fr |
-R |
否 |
同步上传文件时生成结果清单文件。同步上传文件时该参数可选。 |
--arcDir |
-g |
否 |
同步上传文件成功后的归档路径,上传成功后的文件会移动到该本地路径下。 |
--dryRun |
-y |
否 |
测试模式运行,不执行实际的上传操作。 |
--link |
-k |
否 |
上传软链接文件/文件夹指向的真实路径。 如果未指定该参数,而待上传的文件是一个软链接且该软链接指向的目标文件不存在,则Windows操作系统会产生“Thesystemcannotfindthefilespecified”的上传失败异常,而macOS/Linux操作系统会产生“Nosuchfileordirectory”的上传失败异常。 文件夹软链接不能形成环,否则上传会以panic的形式退出;如果不希望产生panic,请在配置文件中配置panicForSymbolicLinkCircle为false。 |
--vlength |
-v |
否 |
同步上传完成后,验证上传到桶中对象的大小是否与本地文件大小一致。 |
--vmd5 |
-M |
否 |
同步上传完成后,验证上传到桶中对象的MD5值是否与本地文件的MD5值一致。 如果待上传的本地文件较大,使用该参数将会因为计算MD5而导致整体性能下降。MD5值校验通过后,会将该值设置为对象元数据x-obs-md5chksum,用于下载或复制时校验MD5。 |
--parallel |
-p |
否 |
每个分段上传任务的最大并发数,默认为配置文件中的defaultParallels。 |
--threshold |
-t |
否 |
开启分段上传任务的阈值,单位:字节,默认为配置文件中的defaultBigfileThreshold。 如果待上传的文件小于该阈值,则使用直接上传模式;否则使用分段上传模式。直接上传模式不会产生断点记录文件,不支持断点续传。支持带容量单位配置,例如,配置1MB代表1048576字节。 |
--acl |
-a |
否 |
同时上传文件时可指定的预定义访问策略。支持的值:
|
--meta |
-E |
否 |
上传文件时可指定的自定义元数据。格式为:key1:value1#key2:value2#key3:value3。 以上值表示上传文件完成后,桶内对象包含三组自定义元数据,分别为:key1:value1、key2:value2、key3:value3。 |
--tempFileDir |
-z |
否 |
同步下载时保存临时文件的文件夹,默认为配置文件中的defaultTempFileDir。 |
--ps |
s- |
否 |
每个分段上传任务的段大小,单位:字节,取值范围是100KB~5GB,默认为配置文件中的defaultPartSize。 支持带容量单位配置,例如,配置1MB代表1048576字节。支持配置为auto,此时obsutil会根据源文件大小自动设置每个分段任务的段大小。 |
--cpd |
-C |
否 |
生成断点记录文件的文件夹,默认为运行obsutil命令的用户目录的子文件夹.obsutil_checkpoint。 每个分段上传任务会产生唯一对应的断点记录文件并保存至该文件夹的upload子文件夹下,分段任务执行成功后,对应的断点记录文件会被自动删除;分段任务执行失败或被中断后,下次执行该分段任务时会尝试通过对应的断点记录文件恢复任务。 |
--jobs |
-j |
否 |
同步上传文件夹时批量任务的最大并发数,默认为配置文件中的defaultJobs。**说明:**工具会保证该值至少为1。 同步文件夹时该参数可选。 |
--exclude |
-x |
否 |
不包含文件的匹配模式,如:*.txt。 支持“*”匹配多个任意字符和“?”匹配单个任意字符,例如abc*.txt代表匹配以abc开头以.txt结尾的任意文件。 您可以使用“\*”代表匹配“*”字符本身,使用“\?”代表匹配“?”字符本身。如果待上传的文件名匹配该参数,则跳过该文件的上传。 建议使用引号传递该匹配模式(macOS/Linux操作系统使用单引号,Windows操作系统使用双引号)防止特殊符号被操作系统转义,导致不可预期的结果。该匹配模式作用于文件全路径(含文件名和文件目录)。该匹配模式仅对文件夹中的文件生效。 支持指定多个exclude参数,如--exclude *.xxx --exclude *.xxx。 同步文件夹时该参数可选。 |
--include |
-I |
否 |
包含文件的匹配模式,如:*.jpg。 支持“*”匹配多个任意字符和“?”匹配单个任意字符。 您可以使用“\*”代表匹配“*”字符本身,使用“\?”代表匹配“?”字符本身。首先执行exclude的匹配规则,如果待上传的文件名不匹配exclude,则判断待上传的文件名是否匹配该参数,如果匹配则上传该文件,否则跳过该文件的上传。 建议使用引号传递该匹配模式(macOS/Linux操作系统使用单引号,Windows操作系统使用双引号)防止特殊符号被操作系统转义,导致不可预期的结果。该匹配模式作用于文件全路径(含文件名和文件目录)。该匹配模式仅对文件夹中的文件生效。 支持指定多个include参数,如--include *.xxx --include *.xxx。 同步文件夹时该参数可选。 |
--at |
-A |
否 |
同步上传文件时指定按照文件最后访问时间作为timeRange匹配模式,仅上传最后访问时间满足timeRange时间段的文件。 需配合--timeRange参数使用。 同步上传文件夹时该参数可选。 |
--disableDirObject |
-D |
否 |
同步上传文件夹时,文件夹本身不会作为一个对象上传,在有很多空文件夹场景时候可以避免无用文件夹上传到对象存储桶中;文件夹下有文件时候,文件夹下文件依然会上传并保持原有路径格式,不受影响。 同步上传文件夹时该参数可选。 |
--timeRange |
-T |
否 |
同步上传文件时的时间段匹配模式,仅上传最后修改时间在该时间段内的文件。该匹配模式优先级低于文件名匹配模式:exclude和include,优先执行文件名匹配模式后才会执行该匹配模式。该匹配模式表示的时间是UTC时间。 使用“time1-time2”,代表匹配的时间段,其中time1必须小于等于time2,格式为yyyyMMddHHmmss。时间格式支持自动补全,例如yyyyMMdd等价于yyyyMMdd000000,yyyyMM等价于yyyyMM01000000。 使用“*-time2”,代表匹配最后修改时间在time2之前的所有文件。 使用“time1-*”,代表匹配最后修改时间time1之后的所有文件。 同步上传文件夹时该参数可选。 |
--mf |
-m |
否 |
设置名称匹配模式(include、exclude)和时间匹配模式(timeRange)对文件夹也生效。 |
--o |
-o |
否 |
生成结果清单文件的文件夹,命令执行完成后,会在该文件夹下生成结果清单文件(可能包含成功结果、失败结果和警告结果三个文件),默认为运行obsutil命令的用户目录的子文件夹.obsutil_output 结果清单文件命名规则:sync_{succeed | failed | warning}_report_时间_TaskId.txt。单个结果清单文件默认情况下最大为30MB且最大可保留的文件个数为1024,可在配置文件中通过recordMaxLogSize和recordBackups分别配置。当涉及多文件/文件夹时,如需确认失败任务的具体错误信息,可参考结果清单文件夹下的失败结果清单文件“sync_failed_report_时间_TaskId.txt”及日志路径下的日志文件。 |
--e |
-P |
否 |
指定终端节点。 |
--i |
-i |
否 |
指定用户的AK。 |
--k |
-k |
否 |
指定用户的SK。 |
--t |
-n |
否 |
指定用户的securitytoken。 |
命令示例
本节以Windows为例介绍eihealth-toolkit的使用过程,Linux和macOS环境使用方法基本相同,可参考。
- 增量同步上传
health sync ./bb2/ /tmp/bb3/ --type=upload --fr -j # 返回结果如下 Start at 2022-04-11 12:04:45.0966584 +0000 UTC Parallel: 5 Jobs: 2 Threshold: 50.00MB PartSize: auto VerifyLength: false VerifyMd5: false CheckpointDir: C:\Users\xxx\.obsutil_checkpoint OutputDir: C:\Users\xxx\.obsutil_output [----------------------------------------] 100.00% tps:0.00 ?/s 1/1 0B/0B 435ms Succeed count is: 1 Failed count is: 0 Skip count is: 1 Succeed bytes is: 0B Metrics [max cost:n/a, min cost:n/a, average cost:0.00 ms, average tps:0.00, transfered size:0B] Task id is: 1b3cdbdc-972f-40cd-9ef0-f233991207c3