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/'
此份文件,但忽略了子目录。有没有办法解决我的问题?非常感谢!
答
我相信你必须使用-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的执行对于每个输入行下面的命令。一个缺点这种方法引入的是,你不能使用-m
为gsutil cp
它可以显著减慢任务。
答
我认为你可以使用find
命令。例如,下面的命令帮助我将“[you path]”文件夹及其子文件夹下的所有.json文件复制到GCS存储桶中,同时使用-m选项。希望它可以帮助
sudo find [your path] -print | grep -i '.*[.]json' | sudo gsutil -m cp -I gs://[your bucket]
你找到一种方法? –