数据管理平台 CLI 操作指南
版本记录
版本名称 | 功能描述 | 发布时间 |
---|---|---|
数据管理平台 GA 版 v1.1.0 | CLI 操作指南从原始长文档中拆分出来,使文档具备更好的可读性。 | 2023-4-28 |
数据管理平台 GA 版 v1.2.0 | CLI 支持大规模数据集的导入,帮助企业更好地管理大模型相关的数据资源。 | 2023-5-30 |
数据管理平台 GA 版 v1.3.0 | CLI 整体主要为 upload 和 download,其他命令为补充。 | 2023-6-30 |
数据管理平台 GA 版 v1.6.0 | 支持数据空间 | 2023-9-30 |
数据管理平台 GA 版 v1.8.0 | CLI download 命令支持下载到大装置 AOSS;CLI upload 命令支持其他常用 OSS(amazon,阿里,百度,华为等) | 2023-11-30 |
CLI 安装 & 版本
CLI 下载安装
支持系统: Linux:ubuntu,centos
使用下述命令,可以进行数据版本管理的 CLI 工具 Graviton 的一键式下载安装
curl --proto '=https' --tlsv1.2 -sSf https://aids-download.aoss.cn-sh-01.sensecoreapi-oss.cn/aidmp/release/install.sh | sh && export PATH=~/.grav/bin:$PATH
安装成功后,会有如下类似的提示信息
The installation was successful !
Graviton version: V1.2.1
Update time(UTC+8): 2023-06-02 15:50:25
CLI 版本信息
使用 grav version 命令,也可以查看当前使用 Graviton 命令行工具的当前版本号和当前版本更新时间
Graviton version: V1.2.1
Update time(UTC+8): 2023-06-02 15:50:25
CLI 配置 & 帮助
CLI 配置:grav config
设置和查看单 Repo 或者全局的配置项
设置 Repo 的 AccessKey ,以便于后续和远端进行正常的交互。
输入 AccessKeyID 后,会提示继续输入 AccessKey Secret
其中 AccessKey 可以从 https://console.sensecore.cn/iam/access-key 处获得
$ grav config AccessKeyID <AccessKeyID>
设置 Repo 的用户名,以便于记录相应用户的操作。
如下,设置全局的 user.name
$ grav config user.name <user.name> --global
可以查看当前的配置内容,如下
$ grav config --list
CLI 帮助: grav help
展示 Graviton 命令行的帮助信息
展示 Graviton CLI 的主要命令用法表
$ grav help
展示指定 command 的具体用法
$ grav <command> (-h|--help)
示例如下:
$ grav upload -h
CLI 上传 & 下载
CLI 上传:grav upload
上传数据到远端 Repo
可以导入OSS 原始数据(包括大装置 AOSS、amazon,阿里,百度,华为等OSS)或者本地的文件目录到数据管理平台的指定数据集上。默认上传到 master 分支的根目录,可以通过参数指定分支、版本和路径。 下面的 <repo_url> 可以在指定数据集的文件页上,点击【复制URL】获取,或者在数据集列表页点击【复制URL】获取。
默认上传到 master 分支的根目录:
$ grav upload <oss_path/local_path> <repo_url>
通过 branch 参数和 path 参数,上传到指定分支的指定目录:
$ grav upload <oss_path/local_path> <repo_url> (-B|--branch)<branch> (-P|--path)<path>
通过 commit 参数和 path 参数,上传到指定版本(必须是某分支的最新版本)的指定目录:
$ grav upload <oss_path/local_path> <repo_url> (-C|--commit)<commit> (-P|--path)<path>
示例如下: 将 AOSS 的 bucket1 桶的 data 文件夹原始数据,上传到 master 分支的根目录:
$ grav upload s3://bucket1.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/data https://console.sensecore.cn/aidmp/datasets/test-tenant/cn-sh-01/test-data-space/test-dataset
将本地文件目录的 test 文件夹数据集,上传到指定分支 dev 的 data/test 目录:
$ grav upload ./test https://console.sensecore.cn/aidmp/datasets/test-tenant/cn-sh-01/test-data-space/test-dataset -B dev -P data/test
另外,我们的 upload 的 CLI 命令也同步支持 repo_url_detail 的参数,可以直接复制文件页的 url 详细地址,上传到该详细地址上
$ grav upload <oss_path / local_path > <repo_url_detail>
例如,将 AOSS 的 bucket1 桶的 data 文件夹原始数据,上传到 master 分支的 data 路径:
$ grav upload s3://bucket1.aoss-internal.cn-sh-01.sensecoreapi-oss.cn/data https://console.sensecore.cn/aidmp/datasets/test-tenant/cn-sh-01/test-data-space/test-dataset/branch/master/tree/data
CLI 下载:grav download
从远端 Repo 下载数据
将远端指定 Repo 下载数据到本地或者是大装置 AOSS 的目录 ,默认 master 分支最新版本,可以指定相应的 Repo 内详细文件目录路径 path ,此时,会在当前目录下新建一个同 Repo 名的文件夹,放置下载下来 Repo 数据。
下面的 <repo_url> 可以在指定数据集的文件页上,点击【复制URL】获取,或者在数据集列表页点击【复制URL】获取。
默认下载 master 分支的根目录:
$ grav download <repo_url> <oss_path/local_path>
通过 branch 参数和 path 参数,下载指定分支的指定目录:
$ grav download <repo_url> <oss_path/local_path> (-B|--branch)<branch> (-P|--path)<path>
通过 commit 参数和 path 参数,下载指定版本的指定目录:
$ grav download <repo_url> <oss_path/local_path> (-C|--commit)<commit> (-P|--path)<path>
示例如下: 下载 master 分支的根目录:
$ grav download https://console.sensecore.cn/aidmp/datasets/test-tenant/cn-sh-01/test-data-space/test-dataset
下载指定分支 dev 的 data/test 目录:
$ grav download https://console.sensecore.cn/aidmp/datasets/test-tenant/cn-sh-01/test-data-space/test-dataset -B dev -P data/test
另外,我们的 download 的 CLI 命令,也同步支持 repo_url_detail 的参数,可以直接复制文件页的 url 详细地址,下载该详细地址上的数据
$ grav download <repo_url_detail>
例如,下载 master 分支的 data 路径:
$ grav download https://console.sensecore.cn/aidmp/datasets/test-tenant/cn-sh-01/test-data-space/test-dataset/branch/master/tree/data
附录:CLI 命令整体概览
数据集的数据文件个数在 10 万量级以下,以及数据文件大小在 10GB 以下,同时也可以使用我们完全类似 Git 的方式进行数据集的版本管理。
支持的整体命令如下:
类别 | CLI 命令 | 描述 |
设置 & 协同 | grav config | 设置和查看单 Repo 或者全局的配置项 |
grav help | 展示 Graviton 命令行的帮助信息 | |
grav upload | 上传数据到远端 Repo | |
grav download | 从远端 Repo 下载数据 | |
grav remote | 添加远端的 Repo 地址 | |
grav init | 本地初始化 Graviton 的 Repo | |
grav clone | 克隆 Repo 到一个新的目录 | |
grav push | 将版本和数据信息推送更新到远端 | |
grav pull | 从远端 Repo 拉取版本和数据信息 | |
版本 & 分支 | grav add | 添加改动到缓存区 |
grav commit | 提交改动到 Repo | |
grav status | 展示当前工作目录的状态 | |
grav log | 展示提交的日志信息 | |
grav diff | 展示两个版本的区别、版本和工作区的区别等 | |
grav checkout | 切换不同的分支、版本,以及恢复文件 | |
grav branch | 创建、删除和列出分支 | |
grav merge | 合并两个分支 |
CLI 命令:设置 & 协同
grav remote
添加远端的 Repo 地址
配置添加远端的 Repo 链接 , origin 非必填 远端 Repo 的链接 url 可以从数据管理平台的界面上获得
$ grav remote add [origin] <url>
示例如下:
$ grav remote add https://console.sensecore.cn/aidmp/datasets/test-tenant/cn-sh-01/test-data-space/test-dataset
grav init
本地初始化 Graviton 的 Repo
在当前目录下创建一个空的 Repo
$ grav init
在当前目录下指定一个新 Repo 名,创建一个空的 Repo
$ grav init <new_repo>
grav clone
克隆 Repo 到一个新的目录
将远端指定 Repo 克隆到本地,默认克隆 master 分支,此时,会在当前目录下新建一个同 Repo 名的文件夹,放置克隆下来 Repo 内容
远端 Repo 的链接 url 可以从数据管理平台的界面上获得
$ grav clone <url>
将远端指定 Repo 克隆到本地,指定 branch 分支,此时,会在当前目录下新建一个同 Repo 名的文件夹,放置克隆下来 Repo 内容
远端 Repo 的链接 url 可以从数据管理平台的界面上获得
$ grav clone (-B|--branch)<branch> <url>
示例如下:
$ grav clone -B dev https://console.sensecore.cn/aidmp/datasets/test-tenant/cn-sh-01/test-data-space/test-dataset
grav push
将版本和数据信息推送更新到远端,建议每次最多推送10万的文件,避免时间过长导致push任务失败
将本地 Repo 的指定 branch 推送到远端 Repo 对应的同名 branch , origin 非必填
$ grav push [origin] <branch>
示例如下:
$ grav push master
如果远端没有对应的 branch 分支,可以通过交互式命令在远端新建对应的 branch 分支
如果远端的数据容量超出购买范围,则无法正常 push 成功,需要购买新增数据容量
如果 push 到远端分支时产生冲突,可以先 pull 到本地解决冲突后再重新 push
grav pull
从远端 Repo 拉取版本和数据信息
在本地 Repo 的 branch 分支下,从远端 Repo 拉取同名 branch 的内容,origin 非必填
$ grav pull [origin] <branch>
示例如下:
$ grav pull master
pull 有冲突时,会有交互式提示 4 种解决方案:
- 推荐解决方式:两个版本的冲突文件带后缀方式同时放到工作区 ,需要用户手动解决冲突
- 冲突文件全部接受 XXX 分支
- 冲突文件全部接受 YYY 分支
- 取消本次 pull
其中,选择第一种推荐解决方式之后,会有交互式提示可能会用到下述 linux 命令,可以单独调整几个特殊的冲突文件后,再使用下述命令
批量删除指定 commitID 对应的冲突文件
for var in `find . -name '*~<last_commit_id>*'`;
do rm $var;
done
批量修改冲突文件的文件名
for var in `find . -name '*~<last_commit_id>*'`;
do mv -f "$var" `echo "$var" |sed 's/~<last_commit_id>//'`;
done
CLI 命令:版本 & 分支
grav add
添加改动到缓存区
添加一个或多个文件或文件夹的改动到暂存区
$ grav add <file1> <file2> ...
add 当前目录下的所有文件的改动到暂存区
$ grav add .
grav commit
提交改动到 Repo
提交本次改动信息到版本库,[msg] 为记录的改动信息
$ grav commit (-m|--message) [msg]
示例如下
$ grav commit -m “first commit in 20220712”
grav status
展示当前工作目录的状态
展示当前暂存区与工作区的区别
$ grav status
grav log
展示提交的日志信息
展示当前分支详细版本信息
$ grav log
展示所有分支的详细版本信息
$ grav log --all
展示一行简略的版本信息
$ grav log --oneline
以演进图的方式展示当前分支信息
$ grav log --graph
可以将这些参数组合,展示所有分支,以演进图的方式,并且只展示一行简略的版本信息
$ grav log --graph --all --oneline
grav diff
展示两个版本的区别、版本和工作区的区别等
查看工作区和缓存区的差别,file(文件或文件夹)为可选,不加 file 为全部文件
$ grav diff [file]
查看工作区和版本库的差别,file(文件或文件夹)为可选,不加 file 为全部文件
$ grav diff HEAD [file]
查看缓存区和版本库的差别,file(文件或文件夹)为可选,不加 file 为全部文件,下面两种方式都支持
$ grav diff --staged [file]
$ grav diff --cached [file]
比较两个指定版本的差异,file(文件或文件夹)为可选,不加 file 为全部文件
$ grav diff <commit> <commit> [file]
比较两个指定分支的差异,file(文件或文件夹)为可选,不加 file 为全部文件
$ grav diff <branch> <branch> [file]
示例如下
$ grav diff master dev
grav checkout
切换不同的分支、版本,以及恢复文件
切换到指定 branch 分支
$ grav checkout <branch>
切换到 commit 对应的版本
$ grav checkout <commit>
丢弃工作区一个或多个文件或文件夹的改动
$ grav checkout <file1> <file2>
丢弃工作区的改动,切换到当前版本
$ grav checkout .
从当前版本新建 branch 分支,且签出到新建的 branch 分支 新建的分支名,支持字母和数字的组合
$ grav checkout (-B|--branch) <branch>
示例如下
$ grav checkout -B dev
grav branch
创建、删除和列出分支
展示本地的分支列表
$ grav branch
展示所有的分支列表, 包括远端的分支
$ grav branch (-a|--all)
示例如下
$ grav branch -a
新建本地 Repo 新的指定分支 branch ,默认从当前分支继承过去 新建的分支名,支持字母和数字的组合
$ grav branch <branch>
删除本地 Repo 指定分支 branch
$ grav branch (-d|--delete) <branch>
示例如下
$ grav branch -d dev
grav merge
合并两个分支
在本地 Repo 的当前分支,合并指定分支 branch
$ grav merge <branch>
merge 有冲突时,会有交互式提示 4 种解决方案:
- 推荐解决方式:两个版本的冲突文件带后缀方式同时放到工作区 ,需要用户手动解决冲突
- 冲突文件全部接受 XXX 分支
- 冲突文件全部接受 YYY 分支
- 取消本次 merge
其中,选择第一种推荐解决方式之后,会有交互式提示可能会用到下述 linux 命令,可以单独调整几个特殊的冲突文件后,再使用下述命令
批量删除指定 commitID 对应的冲突文件
for var in `find . -name '*~<last_commit_id>*'`;
do rm $var;
done
批量修改冲突文件的文件名
for var in `find . -name '*~<last_commit_id>*'`;
do mv -f "$var" `echo "$var" |sed 's/~<last_commit_id>//'`;
done