首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >还原dvc删除-p命令

还原dvc删除-p命令
EN

Stack Overflow用户
提问于 2020-06-18 02:00:22
回答 1查看 751关注 0票数 3

我刚刚错误地使用命令dvc remove training_data.dvc -p删除了一个DVC跟踪文件,这导致了我所有的训练数据集完全消失。我知道在Git中,我们可以很容易地根据一个已删除的分支的散列来还原它。有人知道如何恢复我在DVC中丢失的所有数据吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 05:17:16

您最有可能是安全的(至少数据没有丢失)。来自dvc remove 文档

注意,它不会从DVC缓存或远程存储中删除文件(参见dvc gc)。但是,请记住运行dvc push来保存将来实际要使用或共享的文件。

因此,如果您像用dvc add和/或dvc run一样创建了Git,那么dvc remove -p就不会询问/警告您任何事情,这意味着数据被缓存起来类似于.dvc/cache中的Git。

有一些方法可以检索它,但是我需要知道一些更多的细节--您到底是如何添加数据集的?是你犯了training_data.dvc,还是它完全消失了?到目前为止,这是您添加的唯一数据吗?(很高兴在评论中帮助你)。

恢复目录

首先,这里是简要描述DVC如何在缓存中存储目录的文档。

我们可以做的是在.dir中找到所有的.dvc/cache文件。

find .dvc/cache -type f -name "*.dir"

输出的内容如下:

代码语言:javascript
复制
.dvc/cache/20/b786b6e6f80e2b3fcf17827ad18597.dir
.dvc/cache/00/db872eebe1c914dd13617616bb8586.dir
.dvc/cache/2d/1764cb0fc973f68f31f5ff90ee0883.dir

(如果本地缓存丢失,并且我们正在从远程存储中恢复数据,则应用相同的逻辑,命令(例如,在S3上查找具有.dir扩展名的文件)看起来不同)

每个.dir文件都是一个JSON,包含一个目录的一个版本(文件名、散列等)。它拥有恢复它所需的所有信息。我们需要做的下一件事是了解我们需要哪一种。对于这一点,没有单一的规则,我建议检查(并根据用例选择):

  • 检查修改的日期(如果您还记得何时添加了此数据)。
  • 检查这些文件的内容--如果您记得只存在于您要查找的目录中的特定文件名--只需grep它。
  • 试着一个一个地还原它们,并检查目录内容。

好吧,现在让我们想象一下,我们决定恢复.dvc/cache/20/b786b6e6f80e2b3fcf17827ad18597.dir,(例如,因为它的内容看起来是:

代码语言:javascript
复制
[
{"md5": "6f597d341ceb7d8fbbe88859a892ef81", "relpath": "test.tsv"}, {"md5": "32b715ef0d71ff4c9e61f55b09c15e75", "relpath": "train.tsv"}
]

我们希望获得一个train.tsv目录)。

我们唯一需要做的就是创建一个引用这个目录的.dvc文件:

代码语言:javascript
复制
outs:
- md5: 20b786b6e6f80e2b3fcf17827ad18597.dir
  path: my-directory

(请注意,path /20/b786b6f80e6f80e2b3fcf17827ad18597.dir变成一个散列值: 20b786b6e6f80e2b3fcf17827ad18597.dir)

并对此文件运行dvc pull

应该是这样的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62441146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档