Google cloud platform 仅将某些文件移动到GCP并保留子文件夹

Google cloud platform 仅将某些文件移动到GCP并保留子文件夹,google-cloud-platform,google-cloud-storage,Google Cloud Platform,Google Cloud Storage,我想将所有扩展名为“gz”的文件以及目录“C:\GCPUpload\Additional”的文件夹/子文件夹移动到bucket“gs://BucketName/Additional/”中的文件夹中 我需要保持文件夹结构,方式如下: C:\GCPUpload\Additional\Example1.gz --> gs://BucketName/Additional/Example1.gz C:\GCPUpload\Additional\Example2.gz

我想将所有扩展名为“gz”的文件以及目录“C:\GCPUpload\Additional”的文件夹/子文件夹移动到bucket“gs://BucketName/Additional/”中的文件夹中

我需要保持文件夹结构,方式如下:

C:\GCPUpload\Additional\Example1.gz             --> gs://BucketName/Additional/Example1.gz
C:\GCPUpload\Additional\Example2.gz             --> gs://BucketName/Additional/Example2.gz
C:\GCPUpload\Additional\ExampleNot.txt          --> (Ignore this file)
C:\GCPUpload\Additional\Subfolder2\Example3.gz  --> gs://BucketName/Additional/Subfolder2/Example3.gz
C:\GCPUpload\Additional\Subfolder2\Example4.gz  --> gs://BucketName/Additional/Subfolder2/Example4.gz
这是我目前使用的命令:

  call gsutil mv -r -c "C:\GCPUpload\Additional\**\*.gz" "gs://BucketName/Additional/"
我遇到的问题是,所有文件都被移动到bucket的根目录(即
gs://BucketName/Additional/
),而忽略其原始文件夹/子文件夹

我该怎么写?我已经试过了,在谷歌上搜索过了,但是找不到一个可行的方法


谢谢

当您在shell中使用递归通配符(**)时,您看到的行为是由gsutil实现的,以匹配相应的(较旧的)行为


要执行所需操作,需要列出所有要移动的对象,并创建一个shell脚本,该脚本单独运行
gsutil mv
命令,将它们移动到所需的目录。您可能可以使用本地编辑工具来简化这一过程(如
awk
sed
)。

谢谢。但是如果我创建一个列表,我如何控制一次只运行一个gsutil mv,而不是一次运行所有gsutil mv的事实?您是指多个mv操作不会作为原子事务发生的事实吗?这是不可能的-GCS一次只提供一个对象上操作的原子性。