使用DVC与Azure Blob Storage时二次push后Blob被删除的疑问
问题:DVC推送到Azure Blob Storage后重复push导致Blob标记为已删除?
我使用DVC(Data Version Control)将Azure Blob Storage作为远程存储,连接正常。添加两个文件后执行dvc push,Blob成功出现在Azure存储容器中;但再次执行dvc push后,这些Blob变为“已删除”状态,仅在Azure存储容器UI开启“显示已删除Blob”时可见。
DVC版本信息
dvc version DVC version: 3.42.0 (pip) ------------------------- Platform: Python 3.9.12 on Windows-10-10.0.19045-SP0 Subprojects: dvc_data = 3.8.0 dvc_objects = 3.0.6 dvc_render = 1.0.1 dvc_task = 0.3.0 scmrepo = 2.0.4 Supports: azure (adlfs = 2023.12.0, knack = 0.11.0, azure-identity = 1.15.0), http (aiohttp = 3.9.1, aiohttp-retry = 2.8.3), https (aiohttp = 3.9.1, aiohttp-retry = 2.8.3) Config: Global: C:\Users\*****\AppData\Local\iterative\dvc System: C:\ProgramData\iterative\dvc Cache types: hardlink Cache directory: NTFS on C:\ Caches: local Remotes: azure Workspace directory: NTFS on C:\ Repo: dvc, git
DVC配置信息
remote.myremote.url=azure://container/datasets remote.myremote.version_aware=true remote.myremote.account_name=storageacc core.remote=myremote core.autostage=true remote.myremote.connection_string=*** remote.myremote.account_key=***
解答
这是**版本感知存储(version_aware=true)**开启后的预期行为,不是Bug。
当你开启version_aware=true时,DVC会利用Azure Blob的版本管理功能跟踪数据文件版本。重复执行dvc push时,DVC会检查远程存储中是否已存在相同哈希的文件:
- 如果已存在,DVC会将旧版本Blob标记为软删除(仅在开启“显示已删除Blob”时可见),保留最新版本;
- 但由于文件哈希未变,内容实际没有差异,这个操作是DVC维护版本一致性的机制,不会影响你通过DVC拉取或使用这些数据。
如果不需要这种版本管理行为,可将对应配置改为false:
dvc config remote.myremote.version_aware false
内容的提问来源于stack exchange,提问作者SimonDahrs
相关产品推荐
相关产品推荐

