1 个不稳定版本
0.8.12 | 2022年11月28日 |
---|
在 文件系统 中排名 1315
255KB
1.5K SLoC
sup3
独立的S3工具
警告
这是一个 alpha 版本
任何东西都可能出错。使用的 Rust AWS SDK 也处于开发者预览阶段。
使用目标
- CI和其他需要最小化环境,拉取Python或构建依赖可能不理想
- 最终,作为一个一致、可靠、快速且有趣的交互式S3工具
设计
- 尽可能像现有的Unix命令(例如cp,ls,cat)一样操作
- 默认情况下,在合理的地方报告进度(例如cp,down,up)
特性
- 跨平台
- 使用Rust AWS SDK 的认证支持
- 流式异步传输(文件不读入内存)
- 远程错误上传恢复(由SDK提供)
- 无启动延迟
- 无运行时非平台依赖项(例如
libc
,libm
,libgcc_s
) - 并发传输
- 可选进度报告
- 递归上传支持
- 递归下载支持
- 远程globbing(例如
sup3 ls s3://bucket/media/**/highres*.png .
) - 二进制大小减小
- 上传参数,例如ACLs
- 配置文件支持
- 仅列出文件或仅列出目录
- 分页列表
- 服务器到服务器复制
- 其他S3兼容主机的自定义端点(
--endpoint
) - 同步操作(作为复制/上传/下载的一部分或单独)
命令
- 上传(
upload|
down
)(本地文件到S3远程) - 下载(
download|
down
)(S3 URI到本地文件/目录) - 删除(
rm
)(S3 URI) - 列表(
ls
)(1..N
S3 URI) - 列出存储桶(
list-buckets|
lb
) - 复制(
cp
) - 显示(S3 URI)
- 创建存储桶(
mb
)(S3 URI)
速度
在i7-7700HQ上进行的测量,与S3服务器大约50ms的RTT。
下载 - 20MiB文件
命令 | 平均值 [s] | 最小值 [s] | 最大值 [s] | 相对 | CPU用户 [s] | CPU 系统 [s] | CPU 相关 |
---|---|---|---|---|---|---|---|
sup3 cp s3://bucket/file dir/ |
1.306 ± 0.047 | 1.249 | 1.416 | 1.00 | 0.095 | 0.153 | 100% |
aws s3 cp s3://bucket/file dir/ |
1.855 ± 0.106 | 1.724 | 2.044 | 142% ± 10% | 0.565 | 0.122 | 277% |
下载 - 224byte 文件
命令 | 平均值 [s] | 最小值 [s] | 最大值 [s] | 相对 | CPU用户 [s] | CPU 系统 [s] | CPU 相关 |
---|---|---|---|---|---|---|---|
sup3 cp s3://bucket/file dir/ |
0.246 ± 0.006 | 0.234 | 0.255 | 100% | 0.004 | 0.007 | 100% |
aws s3 cp s3://bucket/file dir/ |
0.910 ± 0.013 | 0.892 | 0.937 | 370% ± 11% | 0.394 | 0.050 | 4036% |
ls - 63,186 个文件从 bucket 通过子字符串
命令 | 平均值 [s] | 最小值 [s] | 最大值 [s] | 相对 | CPU用户 [s] | CPU 系统 [s] | CPU 相关 |
---|---|---|---|---|---|---|---|
sup3 ls--子字符串 s3://bucket/子字符串 >/dev/null |
10.053 ± 0.694 | 9.253 | 10.487 | 100% | 0.485 | 0.141 | 100% |
aws s3 ls s3://bucket/子字符串 >/dev/null |
22.050 ± 3.809 | 19.643 | 26.441 | 219% ± 41% | 11.772 | 0.143 | 1900% |
依赖项
~33–46MB
~758K SLoC