使用 gsutil 复制文件后,它们不会立即从本地存储中删除

After copying files using gsutil, they are not deleted instantly from the local storage

我的任务是将 CSV 文件从本地数据库上传到 Google Cloud storage

为此,我首先将它们复制到我的桌面,然后将它们上传到 Google Cloud storage

我希望此操作自动完成,无需我参与。因此,我创建了一个 CMD 文件,它将被 Task Scheduler 运行。 CMD文件的结构是下一个:

gsutil cp C:\Users\Myname\Desktop\test\*.csv gs://my-bucket

gsutil rm C:\Users\Myname\Desktop\test\*.csv

但是将数据加载到`Google 云存储后,它不会删除 CSV 文件。

但是,如果您在单独的命令中运行删除,它成功删除个文件。

刚刚:

gsutil rm C:\Users\Myname\Desktop\test\*.csv

但我希望下载代码和删除代码在一个文件中。

我也试过这种方法(但对我也没有帮助):

gsutil cp C:\Users\Myname\Desktop\test\*.csv gs://my-bucket

del C:\Users\Myname\Desktop\test\*.csv

这个问题的解决方案是什么?

gsutil mv 命令专为该用例设计。

但是请注意,docs section about atomicity。尤其是从本地文件系统迁移到云端,无法自动上传和删除,所以命令会先上传,验证文件是否存储在云端,然后删除本地文件。

问题是由于 gsutil 是脚本引起的。在 Windows,此脚本 (gsutil) 退出并停止进一步处理批处理文件中的命令。

解决方法是在gsutil前面加上call这个词:

call gsutil cp C:\Users\Myname\Desktop\test\*.csv gs://my-bucket

接下来,不要使用gsutil删除本地文件。请改用 del