管理对象
高级别 aws s3 命令还可以方便地管理 Amazon S3 对象。这些对象命令包括 aws s3 cp、aws s3 ls、aws s3 mv、aws s3 rm 和 sync。cp、ls、mv 和 rm 命令的用法与它们在 Unix 中的对应命令相同,使您可以跨本地目录和 Amazon S3 存储桶无缝工作。sync 命令同步一个存储桶与一个目录或两个存储桶中的内容。
注意
如果对象很大,所有涉及向 Amazon S3 存储桶(aws s3 cp、aws s3 mv 和 aws s3 sync)上传对象的高级别命令都会自动执行分段上传。
使用这些命令时,无法恢复失败的上传。如果分段上传由于超时而失败,或者通过按 CTRL+C 手动取消,AWS CLI 将会清除创建的所有文件并中止上传。此过程可能耗时数分钟。
如果进程被 kill 命令中断或者由于系统故障而中断,则正在进行的分段上传将保留在 Amazon S3 中,必须在 AWS 管理控制台 中手动清除,或者使用 s3api abort-multipart-upload 命令来清除。
cp、mv 和 sync 命令包括一个 --grants 选项,可用来向指定用户或组授予对对象的权限。您可以使用以下语法对权限列表设置 --grants 选项。
--grants Permission=Grantee_Type=Grantee_ID
[Permission=Grantee_Type=Grantee_ID ...]
每个值都包含以下元素:
Permission – 指定授予的权限,可以设置为 read、readacl、writeacl 或 full。
Grantee_Type – 指定被授权者的标识方法,可以设置为 uri、emailaddress 或 id。
Grantee_ID – 根据 Grantee_Type 指定被授权者。
uri – 组 URI。有关更多信息,请参阅谁是被授权者?
emailaddress – 账户的电子邮件地址。
id – 账户的规范 ID。
有关 Amazon S3 访问控制的更多信息,请参阅访问控制。
下面的示例将一个对象复制到一个存储桶中。它授予所有人对对象的 read 权限,向 user@example.com 的关联账户授予 full 权限(read、readacl 和 writeacl)。
$ aws s3 cp file.txt s3://my-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.com
要为上传到 Amazon S3 的对象指定非默认存储类(REDUCED_REDUNDANCY 或 STANDARD_IA),请使用 --storage-class 选项:
$ aws s3 cp file.txt s3://my-bucket/ --storage-class REDUCED_REDUNDANCY
sync 命令的形式如下。可能的源-目标组合有:
本地文件系统到 Amazon S3
Amazon S3 到本地文件系统
Amazon S3 到 Amazon S3
$ aws s3 sync <source> <target> [--options]
下面的示例将 my-bucket 中名为 path 的 Amazon S3 文件夹中的内容与当前工作目录同步。s3 sync 将更新与目标中的同名文件的大小或修改时间不同的任何文件。输出显示在同步期间执行的特定操作。请注意,此操作将子目录 MySubdirectory 及其内容与 s3://my-bucket/path/MySubdirectory 递归同步。
$ aws s3 sync . s3://my-bucket/path
upload: MySubdirectory\MyFile3.txt to s3://my-bucket/path/MySubdirectory/MyFile3.txt
upload: MyFile2.txt to s3://my-bucket/path/MyFile2.txt
upload: MyFile1.txt to s3://my-bucket/path/MyFile1.txt
通常,sync 仅在源和目标之间复制缺失或过时的文件或对象。不过,您可以提供 --delete 选项来从目标中删除源中不存在的文件或对象。 |