gsutil cp:使用-I选项将文件复制到匹配的子目录

问题描述:

我想在保留目录结构的同时将文件列表复制到存储桶。gsutil cp:使用-I选项将文件复制到匹配的子目录

的test.txt:

a/b/1.jpg 
a/c/23.jpg 
a/d/145.jpg 

的gsutil命令:

cat file.txt | gsutil -m cp -I 'gs://my-bucket/' 

此份文件,但忽略了子目录。有没有办法解决我的问题?非常感谢!

+0

你找到一种方法? –

我相信你必须使用-R选项来获得递归复制: gsutil -m cp -R gs://my-bucket/

从documetation: https://cloud.google.com/storage/docs/gsutil/commands/cp

如果要复制您需要使用整个目录树-r选项: gsutil cp -r dir gs://my-bucket

希望帮助!

我有同样的问题和之后的一些想法,我想,这是由设计就像UNIX cp命令。我想出了利用xargs实用的解决方案,你可以这样做:

cat test.txt | xargs -I '{}' gsutil '{}' gs://my-bucket-name/'{}' 

随着-I选项,xargs的执行对于每个输入行下面的命令。一个缺点这种方法引入的是,你不能使用-mgsutil cp它可以显著减慢任务。

我认为你可以使用find命令。例如,下面的命令帮助我将“[you path]”文件夹及其子文件夹下的所有.json文件复制到GCS存储桶中,同时使用-m选项。希望它可以帮助

sudo find [your path] -print | grep -i '.*[.]json' | sudo gsutil -m cp -I gs://[your bucket]