zoukankan      html  css  js  c++  java
  • 阿里云oss命令详解

    SYNOPSIS

    上传,下载或拷贝Objects

    SYNTAX

    ossutil cp file_url cloud_url [-r] [-f] [-u] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=cdir] [--snapshot-path=sdir]
    ossutil cp cloud_url file_url [-r] [-f] [-u] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=cdir] [--snapshot-path=sdir]
    ossutil cp cloud_url cloud_url [-r] [-f] [-u] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=cdir] [--snapshot-path=sdir]

    DETAIL DESCRIPTION

    该命令允许:从本地文件系统上传文件到oss,从oss下载object到本地文件系统,在oss
    上进行object拷贝。分别对应下述三种操作:
    ossutil cp file_url oss://bucket[/prefix] [-r] [-f] [-u] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=file] [--snapshot-path=sdir]
    ossutil cp oss://bucket[/prefix] file_url [-r] [-f] [-u] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=file] [--snapshot-path=sdir]
    ossutil cp oss://src_bucket[/src_prefix] oss://dest_bucket[/dest_prefix] [-r] [-f] [-u] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=file] [--snapshot-path=sdir]

    其中file_url代表本地文件系统中的文件路径,支持相对路径或绝对路径,请遵循本地文
    件系统的使用格式;
    oss://bucket[/prefix]代表oss上的object,支持前缀匹配,不支持通配符。
    ossutil通过oss://前缀区分本地文件系统的文件和oss文件。

    注意:在oss间拷贝文件,目前只支持拷贝object,不支持拷贝未complete的Multipart。


    --recursive选项

    (1)上传文件到oss时,如果file_url为目录,则必须指定--recursive选项,否则无需指
    定--recursive选项。

    (2)从oss下载或在oss间拷贝文件时:
    如果未指定--recursive选项,则认为拷贝单个object,此时请确保src_url精确指定待
    拷贝的object,如果object不存在,则报错。

    如果指定了--recursive选项,ossutil会对src_url进行prefix匹配查找,对这些objects
    批量拷贝,如果拷贝失败,已经执行的拷贝不会回退。

    在进行批量文件上传(或下载、拷贝)时,如果其中某个文件操作失败,ossutil不会退出,
    而是继续进行其他文件的上传(或下载、拷贝)动作,并将出错文件的错误信息记录到report
    文件中。成功上传(或下载、拷贝)的文件信息将不会被记录到report文件中。

    注意:批量操作出错时不继续运行,而是终止运行的情况:
    (1)如果未进入批量文件迭代过程,错误已经发生,则不会产生report文件,ossutil会终止
    运行,不继续迭代过程。如,用户输入cp命令出错时,不会产生report文件,而是屏幕输出错
    误并退出。
    (2)如果批量操作过程某文件发生的错误为:Bucket不存在、accessKeyID/accessKeySecret
    错误造成的权限验证非法等错误,ossutil会屏幕输出错误并退出。

    report文件名为:ossutil_report_日期_时间.report。report文件是ossutil输出文件的一种,
    被放置在ossutil的输出目录下,该目录的路径可以用配置文件中的outputDir选项或命令行
    --output-dir选项指定,如果未指定,会使用默认的输出目录:当前目录下的ossutil_output目录。

    注意:ossutil不做report文件的维护工作,请自行查看及清理用户的report文件,避免产生
    过多的report文件。


    增量上传:

    --update选项(-u)

    如果指定了该选项,ossutil只有当目标文件(或object)不存在,或源文件(或object)新于
    目标文件(或object)时,才执行拷贝。当指定了该选项时,无论--force选项是否指定了,在
    目标文件存在时,ossutil都不会提示,直接采取上述策略。
    该选项可用于当批量拷贝失败时,重传时跳过已经成功的文件。实现增量上传。

    --snapshot-path选项

    该选项用于在某些场景下加速增量上传批量文件(目前,下载和拷贝不支持该选项)。此场景为:
    文件数较多且两次上传期间没有其他用户更改了oss上的对应object。

    在cp上传文件时使用该选项,ossutil在指定的目录下生成文件记录文件上传的快照信息,在下一
    次指定该选项上传时,ossutil会读取指定路径下的快照信息进行增量上传。用户指定的snapshot-path
    必须为本地文件系统上的可写目录,若该路径目录不存在,ossutil会创建该文件用于记录快照信息,
    如果该路径文件已存在,ossutil会读取里面的快照信息,根据快照信息进行增量上传(只上传上次
    未成功上传的文件和本地进行过修改的文件),并更新快照信息。

    注意:
    (1)因为该命令通过在本地记录成功上传的文件的本地lastModifiedTime,从而在下次上传时通过
    比较lastModifiedTime来决定是否跳过相同文件的上传,所以在使用该选项时,请确保两次上传期
    间没有其他用户更改了oss上的对应object。当不满足该场景时,如果想要增量上传批量文件,请使
    用--update选项。
    (2)ossutil不会主动删除snapshot-path下的快照信息,为了避免快照信息过多,当用户确定快照信
    息无用时,请用户自行清理snapshot-path。
    (3)由于读写snapshot信息需要额外开销,当要批量上传的文件数比较少或网络状况比较好或有其
    他用户操作相同object时,并不建议使用该选项。可以使用--update选项来增量上传。

    注意:--update选项和--snapshot-path选项可以同时使用,ossutil会优先根据snapshot-path信息判断
    是否跳过上传,如果不满足跳过条件,再根据--update判断是否跳过上传。如果指定了这两种增量上
    传策略之中的任何一种,ossutil将根据策略判断是否进行上传/下载/拷贝,当遇到目标端的文件已
    存在,也不会询问用户是否进行替换操作,此时--force选项不再生效。

    --force选项

    如果dest_url指定的文件或objects在oss上已经存在,并且未指定--update或--snapshot-path选项,
    ossutil会询问是否进行替换操作(输入非法时默认不替换),如果指定了--force选项,则不询问,
    强制替换。该选项只有在未指定--update或--snapshot-path选项时有效,否则按指定的选项操作。

    --output-dir选项

    该选项指定ossutil输出文件存放的目录,默认为:当前目录下的ossutil_output目录。如果指定
    的目录不存在,ossutil会自动创建该目录,如果用户指定的路径已存在并且不是目录,会报错。
    输出文件表示ossutil在运行过程中产生的输出文件,目前包含:在cp命令中ossutil运行出错时
    产生的report文件。


    大文件断点续传:

    如果源文件大小超过--bigfile-threshold选项指定的大小(默认为100M),ossutil会认为该文件
    为大文件,并自动使用断点续传策略,策略如下:
    (1)上传到oss时:ossutil会对大文件自动分片,进行multipart分片上传,如果上传失败,会
    在本地的.ossutil_checkpoint目录记录失败信息,下次重传时会读取.ossutil_checkpoint目
    录中的信息进行断点续传,当上传成功时会删除.ossutil_checkpoint目录。
    (2)从oss下载时:ossutil会自动对大文件分片下载,组装成一个文件,如果下载失败,同样会
    在.ossutil_checkpoint目录记录失败信息,重试成功后会删除.ossutil_checkpoint目录。
    (3)在oss间拷贝:ossutil会自动对大文件分片,使用Upload Part Copy方式拷贝,同样会在
    .ossutil_checkpoint目录记录失败信息,重试成功后会删除.ossutil_checkpoint目录。

    注意:
    1)小文件不会采用断点续传策略,失败后下次直接重传。
    2)在操作(1)和(3)中,如果操作失败,oss上可能会产生未complete的uploadId,但是只要最
    终操作成功,就不会存在未complete的uploadId(被组装成object)。
    3)上传到oss时,如果.ossutil_checkpoint目录包含在file_url中,.ossutil_checkpoint目录不会
    被上传到oss。该目录路径可以用--checkpoint-dir选项指定,如果指定了该选项,请确保指定的目录
    可以被删除。
    4)如果使用rm命令删除了未complete的Multipart Upload,可能会造成下次cp命令断点续传失败(报
    错:NoSuchUpload),这种时候如果想要重新上传整个文件,请删除相应的checkpoint文件。


    --jobs选项和--parallel选项

    --jobs选项控制多个文件上传/下载/拷贝时,文件间启动的并发数,--parallel控制上传/下载/拷
    贝大文件时,分片间的并发数,ossutil会默认根据文件大小来计算parallel个数(该选项对于小文
    件不起作用,进行分片上传/下载/拷贝的大文件文件阈值可由--bigfile-threshold选项来控制),
    当进行批量大文件的上传/下载/拷贝时,实际的并发数为jobs个数乘以parallel个数。该两个选项
    可由用户调整,当ossutil自行设置的默认并发达不到用户的性能需求时,用户可以自行调整该两个
    选项来升降性能。


    批量文件迁移:

    ossutil支持批量文件迁移,在这种场景下,通常的使用方式是:
    (1)批量上传:
    ossutil cp your_dir oss://your_bucket -r -f -u
    (2)批量下载:
    ossutil cp oss://your_bucket your_dir -r -f -u
    (3)同region的Bucket间迁移:
    ossutil cp oss://your_src_bucket oss://your_dest_bucket -r -f -u

    具体每个选项的意义,请见上文帮助。
    在运行完一轮文件迁移后,请根据屏幕提示查看report文件,处理出错文件。

    在批量上传时,如果文件数比较多且没有其他用户操作相同object时,可以使用--snapshot-path选项
    进行额外的增量上传加速,更多信息参考上文关于--snapshot-path选项的介绍。命令为:
    ossutil cp your_dir oss://your_bucket -r -f -u --shapshot-path=your-path


    用法:

    该命令有三种用法:

    1) ossutil cp file_url oss://bucket[/prefix] [-r] [-f] [-u] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=file] [--snapshot-path=sdir]
    该用法上传本地文件系统中文件或目录到oss。file_url可以为文件或目录。当file_url为文件
    时,无论是否指定--recursive选项都不会影响结果。当file_url为目录时,即使目录为空或者只含
    有一个文件,也必须使用--recursive选项,注意,此时ossutil会将file_url下的文件或子目录上传
    到oss,但不同于shell拷贝,file_url所代表的首层目录不会被创建。
    object命名规则:
    当file_url为文件时,如果prefix为空或以/结尾,object名为:dest_url+文件名。
    否则,object名为:dest_url。
    当file_url为目录时,如果prefix为空或以/结尾,object名为:dest_url+文件或子目录相对
    file_url的路径。
    否则,object名为:dest_url+/+文件或子目录相对file_url的路径。

    2) ossutil cp oss://bucket[/prefix] file_url [-r] [-f] [-u] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=file] [--snapshot-path=sdir]
    该用法下载oss上的单个或多个Object到本地文件系统。如果未指定--recursive选项,则ossutil
    认为src_url精确指定了待拷贝的单个object,此时不支持prefix匹配,如果object不存在则报错。如
    果指定了--recursive选项,ossutil会搜索prefix匹配的objects,批量拷贝这些objects,此时file_url
    必须为目录,如果该目录不存在,ossutil自动创建该目录。
    文件命名规则:
    当file_url为文件时,下载到file_url指定的文件,文件名与file_url保持一致。
    当file_url为目录时,下载到file_url指定的目录中,文件名为:object名称,当object名称中含有/或\时,会创建相应子目录。
    注意:对于以/结尾且大小为0的object,会在本地文件系统创建一个目录,而不是尝试创建一个文件。
    对于其他object会尝试创建文件。

    3) ossutil cp oss://src_bucket[/src_prefix] oss://dest_bucket[/dest_prefix] [-r] [-f] [-u] [--output-dir=odir] [--bigfile-threshold=size] [--checkpoint-dir=file] [--snapshot-path=sdir]
    该用法在oss间进行object的拷贝。其中src_bucket与dest_bucket可以相同,注意,当src_url与
    dest_url完全相同时,ossutil不会做任何事情,直接提示退出。设置meta请使用set-meta命令。如果未
    指定--recursive选项,则认为src_url精确指定了待拷贝的单个object,此时不支持prefix匹配,如果
    object不存在则报错。如果指定了--recursive选项,ossutil会搜索prefix匹配的objects,批量拷贝这
    些objects。
    注意:批量拷贝时,src_url包含dest_url,或dest_url包含src_url是不允许的(dest_url以src_url为
    前缀时,会产生递归拷贝,src_url以dest_url为前缀时,会覆盖待拷贝文件)。单个拷贝时,该情况是
    允许的。
    object命名规则:
    当src_url为单个文件时,如果dest_url的prefix为空或以/结尾,object名为:dest_url+object名去除所在父目录的路径。
    否则,object名为:dest_url。
    当src_url为多个文件时,object名为:dest_url+源object名去除src_prefix。

    SAMPLE

    1) 上传文件到oss
    假设本地local_dir目录中有文件a,b,目录c和d,目录c为空,目录d中包含文件dd。

    ossutil cp local_dir/a oss://bucket1
    生成:
    oss://bucket1/a

    ossutil cp local_dir/a oss://bucket1/b
    生成:
    oss://bucket1/b

    ossutil cp local_dir/a oss://bucket1/b/
    生成:
    oss://bucket1/b/a

    ossutil cp local_dir oss://bucket1/b/
    报错

    ossutil cp local_dir oss://bucket1/b -r
    生成:
    oss://bucket1/b/a
    oss://bucket1/b/b
    oss://bucket1/b/c/
    oss://bucket1/b/d/
    oss://bucket1/b/d/dd

    ossutil cp local_dir oss://bucket1/b -r
    如果某文件上传发生服务器内部错误等失败,会在当前目录下的ossutil_output目录中产生report文件
    记录错误信息,并尝试其他文件的上传操作。

    ossutil cp local_dir oss://bucket1/b -r --output-dir=your_dir
    如果某文件上传发生服务器内部错误等失败,会在your_dir中产生report文件记录错误信息,并尝试其
    他文件的上传操作。

    ossutil cp local_dir oss://bucket1/b -r -u
    使用--update策略进行增量上传

    ossutil cp local_dir oss://bucket1/b -r --snapshot-path=your_local_path
    使用--snapshot-path策略进行增量上传

    ossutil cp local_dir oss://bucket1/b -r -u --snapshot-path=your_local_path
    同时使用--snapshot-path和--update策略进行增量上传

    2) 从oss下载object
    假设oss上有下列objects:
    oss://bucket/abcdir1/a
    oss://bucket/abcdir1/b
    oss://bucket/abcdir1/c
    oss://bucket/abcdir2/a/
    oss://bucket/abcdir2/b/e
    其中oss://bucket/abcdir2/a/的size为0。

    ossutil cp oss://bucket/abcdir1/a b
    生成文件b

    ossutil cp oss://bucket/abcdir1/a b --update
    如果文件b已存在,且更新时间不晚于oss://bucket/abcdir1/a,则跳过本次操作。

    ossutil cp oss://bucket/abcdir1/a b/
    在目录b下生成文件a

    ossutil cp oss://bucket/abcdir2/a/ b
    如果b为已存在文件,报错。
    如果b为已存在目录,在目录b下生成目录a。

    ossutil cp oss://bucket/abc b
    报错,object不存在。

    ossutil cp oss://bucket/abc b -r
    如果b为已存在文件,报错
    否则在目录b下生成目录abcdir1和abcdir2,
    目录abcdir1中生成文件a,b,c
    目录abcdir2中生成目录a和b,目录b中生成文件e

    ossutil cp oss://bucket/ local_dir -r
    如果某文件下载发生服务器内部错误等失败,会在当前目录下的ossutil_output目录中产生report文件
    记录错误信息,并尝试其他文件的下载操作。

    ossutil cp oss://bucket/ local_dir -r --output-dir=your_dir
    如果某文件下载发生服务器内部错误等失败,会在your_dir中产生report文件记录错误信息,并尝试其
    他文件的下载操作。

    ossutil cp oss://bucket/ local_dir -r -u
    使用--update策略进行增量下载

    3) 在oss间拷贝
    假设oss上有下列objects:
    oss://bucket/abcdir1/a
    oss://bucket/abcdir1/b
    oss://bucket/abcdir1/c
    oss://bucket/abcdir2/a/
    oss://bucket/abcdir2/b/e

    ossutil cp oss://bucket/abcdir1/a oss://bucket1
    生成:
    oss://bucket1/a

    ossutil cp oss://bucket/abcdir1/a oss://bucket1/b
    生成:
    oss://bucket1/b

    ossutil cp oss://bucket/abcdir1/a oss://bucket/abcdir1/a/
    生成:
    oss://bucket/abcdir1/a/a

    ossutil cp oss://bucket/abcdir1/a/ oss://bucket/abcdir1/b/
    生成:
    oss://bucket/abcdir1/b/a/

    ossutil cp oss://bucket/abcdir1/a oss://bucket/abcdir1/a/ -r
    报错,递归拷贝

    ossutil cp oss://bucket/abcdir1/a oss://bucket1/b/
    生成:
    oss://bucket1/b/a

    ossutil cp oss://bucket/abc oss://bucket1/b/
    报错,object不存在

    ossutil cp oss://bucket/abc oss://bucket1/123 -r
    生成:
    oss://bucket1/123dir1/a
    oss://bucket1/123dir1/b
    oss://bucket1/123dir1/c
    oss://bucket1/123dir2/a/
    oss://bucket1/123dir2/b/e

    ossutil cp oss://bucket/abc oss://bucket1/123/ -r
    生成:
    oss://bucket1/123/dir1/a
    oss://bucket1/123/dir1/b
    oss://bucket1/123/dir1/c
    oss://bucket1/123/dir2/a/
    oss://bucket1/123/dir2/b/e

    ossutil cp oss://bucket/abcdir1/a oss://bucket1/ -r
    报错,因为此时目标object名称为空,非法

    ossutil cp oss://bucket/ oss://bucket1/ -r
    如果某文件拷贝发生服务器内部错误等失败,会在当前目录下的ossutil_output目录中产生report文件
    记录错误信息,并尝试其他文件的拷贝操作。

    ossutil cp oss://bucket/ oss://bucket1/ -r --output-dir=your_dir
    如果某文件拷贝发生服务器内部错误等失败,会在your_dir中产生report文件记录错误文件的信息,并
    尝试其他文件的拷贝操作。

    ossutil cp oss://bucket/ oss://bucket1/ -r -u
    使用--update策略进行增量拷贝

    OPTIONS

    -r, --recursive
    递归进行操作。对于支持该选项的命令,当指定该选项时,命令会对bucket下所有符合条件的objects进行操作,否则只对url中指定的单个object进行操作。

    -f, --force
    强制操作,不进行询问提示。

    -u, --update
    更新操作

    --output-dir=ossutil_output
    指定输出文件所在的目录,输出文件目前包含:cp命令批量拷贝文件出错时所产生的report文件(关于report文件更多信息,请参考cp命令帮助)。默认值为:当前目录下的ossutil_output目录。

    --bigfile-threshold=104857600
    开启大文件断点续传的文件大小阀值,默认值:100M,取值范围:0B-9223372036854775807B

    --checkpoint-dir=.ossutil_checkpoint
    checkpoint目录的路径(默认值为:.ossutil_checkpoint),断点续传时,操作失败ossutil会自动创建该目录,并在该目录下记录checkpoint信息,操作成功会删除该目录。如果指定了该选项,请确保所指定的目录可以被删除。

    -c, --config-file
    ossutil工具的配置文件路径,ossutil启动时从配置文件读取配置,在config命令中,ossutil将配置写入该文件。

    -e, --endpoint
    ossutil工具的基本endpoint配置(该选项值会覆盖配置文件中的相应设置),注意其必须为一个二级域名。

    -i, --access-key-id
    访问oss使用的AccessKeyID(该选项值会覆盖配置文件中的相应设置)。

    -k, --access-key-secret
    访问oss使用的AccessKeySecret(该选项值会覆盖配置文件中的相应设置)。

    -t, --sts-token
    访问oss使用的STSToken(该选项值会覆盖配置文件中的相应设置),非必须设置项。

    --retry-times=3
    当错误发生时的重试次数,默认值:3,取值范围:1-500

    -j 5, --jobs=5
    多文件操作时的并发任务数,默认值:5,取值范围:1-10000

    --parallel
    单文件内部操作的并发任务数,取值范围:1-10000, 默认将由ossutil根据操作类型和文件大小自行决定。

    --snapshot-path
    该选项用于在某些场景下加速增量上传批量文件(目前,下载和拷贝不支持该选项)。在cp上传文件时使用该选项,ossutil在指定的目录下生成文件记录文件上传的快照信息,在下一次指定该选项上传时,ossutil会读取指定目录下的快照信息进行增量上传。用户指定的snapshot目录必须为本地文件系统上的可写目录,若该目录不存在,ossutil会创建该文件用于记录快照信息,如果该目录已存在,ossutil会读取里面的快照信息,根据快照信息进行增量上传(只上传上次未成功上传的文件和本地进行过修改的文件),并更新快照信息。注意:因为该选项通过在本地记录成功上传的文件的本地lastModifiedTime,从而在下次上传时通过比较lastModifiedTime来决定是否跳过相同文件的上传,所以在使用该选项时,请确保两次上传期间没有其他用户更改了oss上的对应object。当不满足该场景时,如果想要增量上传批量文件,请使用--update选项。另外,ossutil不会主动删除snapshot-path下的快照信息,为了避免快照信息过多,当用户确定快照信息无用时,请用户自行清理snapshot-path。

  • 相关阅读:
    UVa 531 Compromise
    UVa 10130 SuperSale
    UVa 624 CD
    2015年第一天有感
    Bootstrap3.0学习(一)
    IIS上.net注册
    11g Oracle导出表 默认不导出数据为空的表解决
    Oracle数据库密码重置、导入导出库命令
    每天进步一点--WCF学习笔记
    C#每天进步一点--异步编程模式
  • 原文地址:https://www.cnblogs.com/uglyliu/p/8890529.html
Copyright © 2011-2022 走看看