我想编写以下bash脚本,该脚本使用重命名选项将文件从一个GCS存储桶复制到另一个GCS存储桶。
我的输入文件夹是gs://test-rtt-integration/result/frd/*.orc
而我的目标文件夹是gs://test-rtt-integration/recent_files/frd
应根据gs://test-rtt-integration/complex-files/TAN/recent_files/today/frd
提供的名称来重命名复制的文件
复制完成重命名后,我需要清除gs://test-rtt-integration/result/frd
我测试了以下命令,但它们无法正常工作
NAME = "$(gsutil ls gs://test-rtt-integration/complex-files/TAN/recent_files/today/frd)"
gsutil mv gs://test-rtt-integration/result/frd/*.orc gs://test-rtt-integration/recent_files/frd/$NAME
gsutil rm -rf gs://test-rtt-integration/result/frd
(应删除所有.orc文件和其他文件)
但这不能正常工作,因为我必须基于/分割NAME并获得最后的分割,所以如果分割的结果称为SPLIT
,我就必须gsutil mv gs://test-rtt-integration/result/frd/*.orc gs://test-rtt-integration/recent_files/frd/$SPLIT
>
关于如何执行此操作的任何想法?
答案 0 :(得分:0)
问题有点令人困惑。您说您想将文件从一个Google Cloud Storage存储桶移动到另一个存储桶,但是所有操作都在一个称为var id int
var username string
var activites []string
row := db.QueryRow("SELECT id, username, activities FROM users WHERE id = 1")
err := row.Scan(&id, &username, &activites)
的存储桶中进行。
但是,只要您使用命令test-rtt-integration
获得文件位置,例如gsutil ls gs://[BUCKET_NAME]/folder
,因为文件夹中所有对象的gs://[BUCKET_NAME]/folder/[FILENAME].orc
部分始终是相同的,所以只需将其替换为gs://[BUCKET_NAME]/folder/
,您将只获得结尾处的对象名称为{{1 }}等
我不确定这是否正是您要寻找的东西,但是我做了一些自我编码,并创建了一个bash脚本,该脚本是:
null
存储桶文件夹中获取每个对象的名称[FILENAME].orc
存储桶文件夹复制到gs://[BUCKET_NAME]/from
存储桶文件夹gs://[BUCKET_NAME]/from
存储桶文件夹中删除所有对象内部有注释,详细解释了每个操作的工作方式。如果这不是您要找的东西,您可以了解其工作原理,并以更适合您的不同方式实施它。我已经在Google Cloud Shell中测试了该脚本,它正在运行。 example code can be found in GitHub。