使用Java在两个Google云存储桶之间复制
要在两个Google云存储桶之间进行复制,需要Java SDK中的以下命令使用Java在两个Google云存储桶之间复制,java,google-cloud-platform,google-cloud-storage,Java,Google Cloud Platform,Google Cloud Storage,要在两个Google云存储桶之间进行复制,需要Java SDK中的以下命令 gsutil cp gs://bucket-name/filename gs://bucket-name 我有两个选择来使用下面的一个。专家们,你能建议是否有更好的方法吗 Java.lang.Runtime.exec() Java.lang.ProcessBuilder 如中所述,您可以使用Java客户端库在存储桶之间复制对象,作为命令的直接替代 gsutil cp gs://SOURCE\u BUCKET\u N
gsutil cp gs://bucket-name/filename gs://bucket-name
我有两个选择来使用下面的一个。专家们,你能建议是否有更好的方法吗
gsutil cp gs://SOURCE\u BUCKET\u NAME/SOURCE\u OBJECT\u NAME gs://DESTINATION\u BUCKET\u NAME/NAME\u OF\u COPY
这是示例代码,您可以从中查看并下载完整的示例项目,请查看以了解哪些依赖项是必需的
import com.google.cloud.storage.Blob;
导入com.google.cloud.storage.storage;
导入com.google.cloud.storage.StorageOptions;
公共类CopyObject{
公共静态void copyObject(
字符串projectId、字符串sourceBucketName、字符串objectName、字符串targetBucketName){
//GCP项目的ID
//String projectId=“您的项目id”;
//原始对象所在的存储桶的ID
//字符串sourceBucketName=“您的源bucket”;
//要复制的GCS对象的ID
//String objectName=“您的对象名”;
//要将对象复制到的存储桶的ID
//字符串targetBucketName=“目标对象存储桶”
Storage Storage=StorageOptions.newBuilder().setProjectId(projectId.build().getService();
Blob Blob=storage.get(sourceBucketName,objectName);
//这将保留原始名称,您也可以这样做
//copyTo(targetBucketName,“目标对象名称”)更改名称
blob.copyTo(targetBucketName);
System.out.println(
“复制的对象”
+对象名
+“从桶中”
+sourceBucketName
+“到”
+targetBucketName);
}
}
如果1)希望存储桶中的blob(文件)名称保持不变
2)您需要复制多个(>100)文件。最好的方法是使用传输作业
这项工作是由谷歌用自己的设备完成的,将文件一个一个地从一个存储桶复制到另一个存储桶要快得多,因为它们可以与底层存储进行通信
看看Google提供的和。您可以使用GCS Java API。上面的gsutil命令是否有完全相同的命令?