get-url
从支持的 URL(例如 s3://
、ssh://
等协议)下载文件或目录到本地文件系统。
参见
dvc get
,用于从其他 DVC 仓库(例如托管在 GitHub 上的仓库)下载数据/模型文件或目录。
概要
usage: dvc get-url [-h] [-q | -v] [-j <number>] [-f] [--fs-config <name>=<value>] url [out]
positional arguments:
url (See supported URLs in the description.)
out Destination path to put files in.
描述
在某些情况下,将文件或目录从远程位置下载到本地文件系统会很方便。dvc get-url
命令可帮助用户完成此操作。
请注意,与
dvc import-url
不同,此命令不会跟踪下载的数据文件(不会创建.dvc
文件)。因此,该命令无需在现有的 DVC 项目 中运行。
url
参数应提供要下载数据的位置,而 out
可用于指定下载数据所需的目录和/或文件名。如果指定了一个已存在的目录,则文件或目录将被放置在该目录内。
请参阅 dvc list-url
,了解如何浏览外部位置中的文件和目录以供下载。
DVC 支持多种类型的(本地或)远程数据源(协议):
类型 | 描述 | url 格式示例 |
---|---|---|
s3 | Amazon S3 | s3://bucket/data |
azure | Microsoft Azure Blob 存储 | azure://container/data |
gs | Google Cloud Storage | gs://bucket/data |
ssh | SSH 服务器 | ssh://user@example.com/path/to/data |
hdfs | HDFS 到文件* | hdfs://user@example.com/path/to/data.csv |
http | HTTP 到文件* | https://example.com/path/to/data.csv |
webdav | WebDav 到文件* | webdavs://example.com/enpoint/path |
webhdfs | HDFS REST API* | webhdfs://user@example.com/path/to/data.csv |
本地 | 本地路径 | /path/to/local/data |
如果你通过
pip
安装了 DVC 并计划使用云服务作为远程存储,可能需要安装这些可选依赖项:[s3]
、[azure]
、[gs]
、[oss]
、[ssh]
。或者,使用[all]
来包含所有依赖项。命令应如下所示:pip install "dvc[s3]"
。(此示例会随 DVC 一起安装boto3
库以支持 S3 存储。)
* 关于远程位置的说明:
- HDFS、HTTP、WebDav 和 WebHDFS 不支持下载整个目录,仅支持单个文件。
另一种理解 dvc get-url
命令的方式是将其视为下载数据文件的工具。例如,在 GNU/Linux 系统上,对于 HTTP(S),可以使用以下方式代替 dvc get-url
:
$ wget https://example.com/path/to/data.csv
选项
-
-j <number>
,--jobs <number>
- DVC 从源下载数据时的并行级别。默认值为4 * cpu_count()
。使用更多任务可能加快操作速度。 -
-f
,--force
- 当使用--out
指定本地目标文件或目录时,如果这些路径已存在,操作将失败。使用此标志会强制执行操作,导致命令覆盖现有的本地文件/目录。 -
--fs-config <name>=<value>
- 针对目标 URL 的dvc remote
配置选项。 -
-h
,--help
- 打印使用说明/帮助信息,然后退出。 -
-q
,--quiet
- 不向标准输出写入任何内容。如果没有问题则以 0 退出,否则以 1 退出。 -
-v
,--verbose
- 显示详细的跟踪信息。
示例
此命令将 S3 对象复制到当前工作目录,并保持相同的文件名:
$ dvc get-url s3://bucket/path
默认情况下,DVC 假定 AWS CLI 已经配置好。
DVC 将使用 AWS 凭证文件访问 S3。若要覆盖配置,可以使用 dvc remote modify
中描述的参数。
我们使用
boto3
库与 AWS 进行通信。可能会执行以下 API 方法:
head_object
download_file
因此,请确保已启用
s3:GetObject
权限。