如何从DVC缓存中删除指定文件/文件夹以释放本地磁盘空间
问题:从DVC缓存中删除单个文件/文件夹以释放磁盘空间
我通过dvc pull <my_data_folder.dvc>拉取数据文件夹后,数据会被存储到.dvc/cache目录,同时my_data_folder里会生成指向缓存的软链接(已配置DVC使用软链接)。执行ls -l my_data_folder可以看到类似这样的结构:
my_data_file_1.pk --> .dvc/cache/4f/7bc7702897bec7e0fae679e968d792 my_data_file_2.pk --> .dvc/cache/4f/7bc7702897bec7e0fae679e968d792 ...
当暂时不需要这些数据时,我整理了两种手动清理的方法,但不确定第二种是否可行,同时也想找更优的方案:
预备步骤(可选)
类Unix系统默认使用软链接,无需执行这条命令:
dvc unprotect my_data_folder
方法一(已验证可行)
删除所有缓存数据,在仓库根目录执行:
rm -r my_data_folder rm -rf .dvc/cache
这个方法能彻底释放空间,之后需要数据时重新dvc pull即可,但会删掉所有DVC下载的数据,后续得重新拉取全部内容。
方法二(未验证)
仅删除指定文件的缓存(不确定是否会损坏DVC):
- 先查看软链接对应的缓存路径:
ls -l my_data_folder
- 执行删除命令,比如删除
my_data_file_1.pk对应的缓存文件:
rm .dvc/cache/4f/7bc7702897bec7e0fae679e968d792
关于dvc gc的说明
在我的使用场景里,执行dvc gc无法删除目标缓存文件。
想请教的问题:
- 方法二是否可行?会不会损坏DVC仓库?
- 有没有更高效的清理方法?
- 如何自动删除某个文件夹对应的全部缓存,不用逐个文件操作?
内容的提问来源于stack exchange,提问作者Jau A
相关产品推荐
相关产品推荐

