如何移除已通过DVC推送到GCS的凭证文件?
解决方法
1. 确认DVC远程存储的位置
首先执行以下命令查看当前DVC配置的远程存储信息:
dvc remote list
如果显示远程存储(比如名为gcs),获取其对应的GCS bucket路径:
dvc remote get gcs url
输出格式类似gs://your-bucket-name/dvc-cache,这就是DVC上传文件的根路径。
2. 定位目标文件在GCS的实际路径
DVC上传的文件会以哈希值命名存储在远程缓存中,你可以通过以下方式找到对应路径:
- 如果本地仍保留
data/jsons/creds.json,计算其DVC哈希:
得到哈希值(比如dvc hash data/jsons/creds.jsona1b2c3d4e5f6)后,GCS上的路径为gs://your-bucket-name/dvc-cache/a1/b2c3d4e5f6 - 如果本地文件已删除,直接用
gsutil遍历bucket查找目标文件:gsutil ls gs://your-bucket-name/**/creds.json
3. 删除GCS上的加密文件
根据文件的加密方式执行对应命令:
情况A:使用客户提供的加密密钥(CSE)
删除时需指定加密密钥文件路径:
gsutil rm -k /path/to/your/encryption-key-file gs://YOUR_BUCKET_NAME/PATH_TO_FILE
情况B:使用GCS KMS密钥加密(SSE-KMS)
确保当前执行命令的账号拥有对应KMS密钥的roles/cloudkms.cryptoKeyEncrypterDecrypter权限,直接执行删除命令:
gsutil rm gs://YOUR_BUCKET_NAME/PATH_TO_FILE
4. 清理DVC本地缓存与追踪记录
如果dvc.yaml不存在,先在项目根目录重新初始化DVC(不会覆盖现有配置):
dvc init
然后标记目标文件为已删除并更新DVC记录:
dvc rm data/jsons/creds.json dvc commit
最后清理远程缓存中不再被追踪的文件:
dvc gc -r gcs --workspace
内容的提问来源于stack exchange,提问作者EUDES FILHO
相关产品推荐
相关产品推荐

