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

gsutil cp:使用-I选项将文件复制到匹配的子目录,gsutil,Gsutil,我想在保留目录结构的同时将文件列表复制到bucket中 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/' 这将复制文件,但忽略子目录。有办法解决我的问题吗?非常感谢 我相信您必须使用-R选项来获取递归副本: gsutil-mcp-rgs://my bucket/ 从文件中: 如果要复制整个目录树,则需要使用-r选项: gsutil cp-

我想在保留目录结构的同时将文件列表复制到bucket中

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/'

这将复制文件,但忽略子目录。有办法解决我的问题吗?非常感谢

我相信您必须使用-R选项来获取递归副本:
gsutil-mcp-rgs://my bucket/

从文件中:

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


希望有帮助

我也遇到了同样的问题,经过一番思考,我发现它是通过设计实现的,就像unix
cp
命令一样。我使用
xargs
实用程序提出了一个解决方案,您可以执行以下操作:

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

使用
-I
选项,xargs对每个输入行执行以下命令。此方法引入的一个缺点是,您不能对
gsutil cp
使用
-m
,这会显著降低任务的速度。

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

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

唉,
-r
所做的是将指定目录的树复制到目标,而不是将指定文件的任何中间目录。实际上,
gsutil cp
不知道源的“根”/“工作”目录。