更新时间:2022-11-08 GMT+08:00
分享

上传数据

使用upload命令,将本地数据上传到EIHealth平台。该命令不支持将数据上传到引用目录。

最小可以上传0Byte的空文件或文件夹,最大可以上传48.8TB的单个文件。

数据在上传的过程中,受网络影响可能出现损坏,上传命令默认会在上传完成后,验证项目中数据的MD5值与本地数据的MD5值的一致性,以及验证项目中数据的大小与本地数据大小一致性。

命令结构

health upload <srcdir> <destdir> [flags]
表1 参数说明

参数

简写

是否必选

说明

srcdir

源路径。

destdir

目的路径。

--rename

-e

重命名,上传文件时可选。

--recursive

-r

递归上传文件夹中所有的文件和子文件夹,上传文件夹时必选。

--force

-f

强制操作,不进行询问提示,上传文件夹时可选。

--flat

-l

上传文件夹时,只上传该文件夹下的所有内容,上传文件夹时可选。

--update

-u

增量上传操作,设置该参数后上传每个文件时会比对平台数据路径中的文件,仅在以下情况时上传数据:

  • 文件不存在。
  • 待上传文件大小不与平台文件大小一致。
  • 文件的最后修改时间不一致。

--parallel

-p

上传文件时,每个分段上传任务数的最大并发数,默认为5。取值范围[1,10]。

--jobs

-j

上传文件夹时,批量任务的最大并发数,默认为5。取值范围[1,10]。

--fr

-R

上传对象时生成结果清单文件。

--arcDir

-g

上传文件成功后的归档路径,上传成功后的文件会移动到该本地路径下。

--dryRun

-y

测试模式运行,不执行实际的上传操作。

--link

-K

上传软链接文件/文件夹指向的真实路径。

如果未指定该参数,而待上传的文件是一个软链接且该软链接指向的目标文件不存在,则Windows操作系统会产生“The system cannot find the file specified”的上传失败异常,macOS/Linux操作系统会产生“No such file or directory”的上传失败异常。

文件夹软链接不能形成环,否则上传会以panic的形式退出;如果不希望产生panic,请在配置文件中配置panicForSymbolicLinkCircle为false。

--vlength

-v

上传完成后,验证桶中对象的大小是否与本地文件大小一致。

--vmd5

-M

上传完成后,验证桶中对象的MD5值是否与本地文件的MD5值一致。

如果待上传的本地文件较大,使用该参数将会因为计算MD5而导致整体性能下降。MD5值校验通过后,会将该值设置为对象元数据x-obs-md5chksum,用于下载或上传时校验MD5。

--threshold

-t

开启分段上传任务的阈值,单位:字节,默认为配置文件中的defaultBigfileThreshold。

如果待上传的文件小于该阈值,则使用直接上传模式;否则使用分段上传模式。直接上传模式不会产生断点记录文件,不支持断点续传。支持带容量单位配置,例如,配置1MB代表1048576字节。

--acl

-a

上传对象时可指定的目标对象的预定义访问策略。

支持的值:

  • private:私有读写
  • public-read:公共读
  • public-read-write:公共读写
  • bucket-owner-full-control:桶拥有者完全控制

--meta

-E

复制对象时可指定的目标对象的自定义元数据。

格式为:key1:value1#key2:value2#key3:value3。

以上值表示上传对象完成后,桶内目标对象包含三组自定义元数据,分别为:key1:value1、key2:value2、key3:value3。

--ps

-s

每个分段上传任务的段大小,单位:字节,取值范围是100KB~5GB,默认为配置文件中的defaultPartSize。

支持带容量单位配置,例如,配置1MB代表1048576字节。

支持配置为auto,此时obsutil会根据源对象大小自动设置每个分段任务的段大小。

--cpd

-C

生成断点记录文件的文件夹,默认为运行obsutil命令的用户目录的子文件夹.obsutil_checkpoint。

每个分段上传任务会产生唯一对应的断点记录文件并保存至该文件夹的copy子文件夹下,分段任务执行成功后,对应的断点记录文件会被自动删除;分段任务执行失败或被中断后,下次执行该分段任务时会尝试通过对应的断点记录文件恢复任务。

--msm

-N

开启多文件/文件夹上传模式,支持的值:[1, 2]。

  • 如果msm=1则代表上传的URL是一组文件/文件夹列表(以英文逗号分隔)。如果文件/文件夹名本身包含英文逗号,请不要使用msm=1的模式。
  • 如果msm=2则代表上传的URL是一个包含文件/文件夹列表的文件。

多文件/文件夹上传时必选,如果没有设置--recursive参数,则列表中的文件夹不会被上传。

--exclude

-x

不包含源对象的匹配模式,如:*.txt。

支持“*”匹配多个任意字符和“?”匹配单个任意字符,例如abc*.txt代表匹配以abc开头以.txt结尾的任意文件。

您可以使用“\*”代表匹配“*”字符本身,使用“\?”代表匹配“?”字符本身。如果待上传的对象名匹配该参数,则跳过该对象的上传。

建议使用引号传递该匹配模式( macOS/Linux操作系统使用单引号,Windows操作系统使用双引号)防止特殊符号被操作系统转义,导致不可预期的结果。

该匹配模式作用于对象全路径(含从根路径开始的对象前缀和对象名,例如,桶内对象路径为obs://bucket/src1/src2/test.txt,则对象的全路径为src1/src2/test.txt)。该匹配模式仅适用于对象名非“/”结尾的对象。

支持指定多个exclude参数,如 --exclude *.xxx --exclude *.xxx。

--include

-I

包含源对象的匹配模式,如:*.jpg。

支持“*”匹配多个任意字符和“?”匹配单个任意字符。

您可以使用“\*”代表匹配“*”字符本身,使用“\?”代表匹配“?”字符本身。首先执行exclude的匹配规则,如果待上传的对象名不匹配exclude,则判断待上传的对象名是否匹配该参数,如果匹配则上传该对象,否则跳过该文件的上传。

建议使用引号传递该匹配模式(macOS/Linux操作系统使用单引号,Windows操作系统使用双引号)防止特殊符号被操作系统转义,导致不可预期的结果。

该匹配模式作用于对象全路径(含从根路径开始的对象前缀和对象名,例如,桶内对象路径为obs://bucket/src1/src2/test.txt,则对象的全路径为src1/src2/test.txt)。该匹配模式仅适用于对象名非“/”结尾的对象。

支持指定多个include参数,如--include *.xxx --include *.xxx。

--at

-A

指定按照文件最后访问时间作为--timeRange匹配模式,仅上传最后访问时间满足--timeRange时间段的文件。

需要与--timeRange配合使用。

--disableDirObject

-D

上传文件夹时候,文件夹本身不会作为一个对象上传,在有很多空文件夹场景时候可以避免无用文件夹上传到对象存储桶中;文件夹下有文件时候,文件夹下文件依然会上传并保持原有路径格式,不受影响。

--timeRange

-T

上传文件时的时间段匹配模式,仅上传最后修改时间在该时间段内的文件。该匹配模式优先级低于文件名匹配模式:exclude和include,优先执行文件名匹配模式后才会执行该匹配模式。

使用“time1-time2”,代表匹配的时间段,其中time1必须小于等于time2,格式为yyyyMMddHHmmss。时间格式支持自动补全,例如yyyyMMdd等价于yyyyMMdd000000,yyyyMM等价于yyyyMM01000000。

使用“*-time2”,代表匹配最后修改时间在time2之前的所有文件,使用“time1-*”,代表匹配最后修改时间time1之后的所有文件。

该匹配模式表示的时间是UTC时间。

--mf

-m

设置名称匹配模式(include、exclude)和时间匹配模式(timeRange)对文件夹也生效。

--o

-o

生成结果清单文件的文件夹,命令执行完成后,会在该文件夹下生成结果清单文件(可能包含成功结果、失败结果、警告结果三个文件),默认为运行obsutil命令的用户目录的子文件夹.obsutil_output。

结果清单文件命名规则:up_{succeed | failed | warning}_report_时间_TaskId.txt。单个结果清单文件默认情况下最大为30MB且最大可保留的文件个数为1024,可在配置文件中通过recordMaxLogSize和recordBackups分别配置。

当涉及多文件/文件夹时,如需确认失败任务的具体错误信息,可参考结果清单文件夹下的失败结果清单文件“up_failed_report_时间_TaskId.txt”及日志路径下的日志文件

--e

-P

指定终端节点。

--i

-i

指定用户的AK。

--k

-k

指定用户的SK。

--t

-n

指定用户的securitytoken。

--recover

-z

待恢复上传任务结果清单文件的任务号。

任务号(TaskId)可在每次上传任务运行完毕后获取,或者通过结果清单文件名查询(文件名除去后缀.txt后的后36位)。

待恢复的上传任务会从结果清单的文件夹中查找,结果清单文件夹的路径参考附加参数--o。

命令示例

本节以Windows为例介绍eihealth-toolkit的使用过程,Linux和macOS环境使用方法基本相同,可参考。

上传数据前需要使用switch命令进入待操作的项目。

  • 列举路径中的文件夹对象时,需使用/xxx/格式,如示例中的/src/。
  • 列举本地路径中的文件夹对象时,需要使用路径/文件名或路径\文件名格式,如示例中的D:\local。
  • 如果路径中带有特殊字符比如()之类的,运行的时候需要将整个路径用""括起来,或者用\将字符转义,例如:health cp "/src2/abs(1).txt" /src1/ 或者 health cp /src2/abs\(1\).txt /src1/ 。
  • 将本地D:\local\data\test.txt路径下的txt文件上传至EIHealth平台项目中的src文件夹中。
    上传完成后,会在EIHealth平台数据管理页面的src文件中,生成test.txt文件。
    health upload D:\local\data\test.txt /src/
  • 上传文件并重命名为abc.txt。
    health upload D:\local\data\test.txt /src/  --rename abc.txt
  • 递归上传本地D:\local路径下的所有文件和文件夹至项目src文件夹中(不上传local文件夹本身)。
    health upload D:\local  /src/ -r -f -l
  • 上传本地D:\local文件夹至项目src文件夹中(上传local文件夹本身)
    health upload D:\local /src/ -r -f
  • 增量上传文件,同步本地D:\local\test.txt文件至项目src文件夹中。
    health upload D:\local\test.txt /src/ --update -r

相关文档