35个稳定版本 (6个主要版本)
12.0.0 | 2024年1月3日 |
---|---|
11.2.0 | 2023年12月5日 |
11.1.1 | 2023年10月12日 |
10.0.8 | 2023年9月19日 |
6.1.2 | 2021年11月3日 |
#50 in 压缩
150KB
3K SLoC
Esthri (S3)
非常简单的(内存稳定)S3客户端,支持get、put、head、list和sync操作。
esthri 6.3.0
Simple S3 file transfer utility.
USAGE:
esthri <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
abort Manually abort a multipart upload
etag Compute and print the S3 ETag of the file
get Download an object from S3
head-object Retreive the ETag for a remote object
help Prints this message or the help of the given subcommand(s)
list-objects List remote objects in S3
put Upload an object to S3
serve Launch an HTTP server attached to the specified bucket
sync Sync a directory with S3
AWS S3兼容层
esthri CLI工具还提供了一个AWS CLI兼容模式,其中它可以处理与aws s3
工具相同的CLI界面的cp
和sync
操作。目前,这些命令只实现了基本案例,并且只处理了一些可选参数。
要使用,esthri二进制文件必须被
- 命名为或硬链接为
aws
- 通过设置
ESTHRI_AWS_COMPAT_MODE
环境变量来运行
在此模式下,esthri将尝试透明地调用实际的aws
工具,如果遇到它无法处理的命令。为此,应将实际aws
工具的路径放入名为ESTHRI_AWS_PATH
的环境变量中。例如:ETHRI_AWS_PATH=/usr/bin/aws
。如果未指定此环境变量,则esthri将默认调用aws.real
作为aws
工具。
$ ln -s /usr/local/bin/aws /usr/local/bin/aws.real
$ ESTHRI_AWS_COMPAT_MODE=1 esthri s3 help # prints the S3 help text, as generated by the aws command
透明同步压缩
esthri可以透明地压缩文件,使得它们在S3中压缩,但在本地文件系统中不压缩。要启用,可以设置ESTHRI_AWS_COMPAT_MODE_COMPRESSION
环境变量或使用--transparent-compression
CLI选项。例如
ESTHRI_AWS_COMPAT_MODE=1 esthri s3 sync mydirectory/ s3://esthri-test/myfiles/ --transparent-compression # syncs as normal, however files in S3 are gzipped
ESTHRI_AWS_COMPAT_MODE=1 esthri s3 sync s3://esthri-test/myfiles/ mynewdirectory/ --transparent-compression # syncs and decompresses files as they are synced down. mydirectory and mynewdirectory will now contain the same files
esthri使用S3元数据来完成此透明压缩,将压缩文件的esthri版本号存储在已压缩文件的元数据中。因此,解压缩将仅适用于esthri自己压缩的文件。
AWS凭证提供者选择
强烈建议设置一个特定的凭证提供者,它可以提供更好的安全性和细粒度控制。例如:
CREDENTIAL_PROVIDER=profile esthri s3 sync s3://esthri-test/myfiles/ mynewdirectory/
ESTHRI_CREDENTIAL_PROVIDER=env
——> 从环境变量中获取 ESTHRI_CREDENTIAL_PROVIDER=profile
——> 从默认凭证文件中获取 ESTHRI_CREDENTIAL_PROVIDER=container
——> 从ECS任务中的IAM角色中获取 ESTHRI_CREDENTIAL_PROVIDER=instance_metadata
——> 从实例元数据服务中获取 ESTHRI_CREDENTIAL_PROVIDER=k8s
——> 从kubernetes身份验证服务中获取 ESTHRI_CREDENTIAL_PROVIDER
——> 如果为空,则显式使用默认凭证提供者
如果没有设置,程序将回退到默认凭证提供者,按照上述顺序迭代上述提供者,直到找到第一个可用的值。
发布
cargo-release 使用 release.toml 文件来自动化 esthri 的发布配置。
要执行发布,请运行 cargo release <release-level> -x
。
版权
Copyright (C) 2021 Swift Navigation Inc.
Contact: Swift Navigation <[email protected]>
This source is subject to the license found in the file 'LICENSE' which must be
be distributed together with this source. All other rights reserved.
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
依赖
~32–50MB
~784K SLoC