我在 Linux 环境中使用 gsutil 来管理 GCS 中的文件。我喜欢能够使用命令
gsutil -m cp -I gs://...
在其他一些命令之前将 STDIN 传递给 gsutil 以上传文件;这样做时,我可以维护已上传文件的本地列表或生成特定模式以上传和移交它们。
我希望能够执行类似的命令
gsutil -m rm -I gs://...
类似地擦洗文件。目前,我构建了一个大文件列表以删除并使用以下代码运行它:
while read line
do
gsutil rm gs://...
done < "$myfile.txt"
与多线程“gsutil -m rm...”命令相比,这非常慢,并且当您必须一次处理一个列表中的文件时,启用 -m 标志无效。我也尝试过跑步
gsutil -m rm gs://.../* # remove everything
<my command> | gsutil -m cp -I gs://.../ # put back the pieces that I want
但这涉及重新复制大量数据并浪费大量时间;数据已经存在,只需要删除一些。任何想法将不胜感激。另外,我在重命名文件的两端都没有很大的灵活性。否则,在上传之前快速重命名将处理所有这些。