在 NodeJs 中将存储桶数据从一个项目复制到另一个项目的实用程序
Utility for copying bucket data from one project to another in NodeJs
我需要将数据从 gCloud 项目 A 中的一个存储桶复制到项目 B 中的另一个存储桶。如果 NodeJs 中存在任何实用程序可以执行此操作?
您可以使用Cloud Storage Client Libraries。要复制您的一个 Cloud Storage 存储桶中的对象,请参阅此示例代码:
const srcBucketName = 'your-source-bucket';
const srcFilename = 'your-file-name';
const destBucketName = 'target-file-bucket';
const destFileName = 'target-file-name';
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
async function copyFile() {
// Copies the file to the other bucket
await storage
.bucket(srcBucketName)
.file(srcFilename)
.copy(storage.bucket(destBucketName).file(destFileName));
console.log(
`gs://${srcBucketName}/${srcFilename} copied to gs://${destBucketName}/${destFileName}`
);
}
copyFile().catch(console.error);
此外,您需要确保您已 assigned a role 获得其他项目的必要权限。
您可能想要获取存储桶中的 blob 列表,下载它们,然后将它们上传到另一个存储桶(这就是 gsuilt cp -m gs://origin_bucket/** gs://destination_bucket/
所做的)。
这种方法的问题是你会消耗 CPU(在你这边),并且需要一些时间。
如果要将 所有 数据从一个存储桶移动到另一个存储桶,最好的方法是使用 Storage Transfer Service.
使用存储传输服务,您只需告诉源存储桶和目标存储桶,以及可选的时间表...google 将比您自己执行操作快得多。
另请记住,源和目标存储桶也可以是 GCS 存储桶、S3 或 Azure 存储存储桶。
看看google-provided Node Sample Code for Storage Transfer Service.
如果您只想传输一些文件,存储传输服务有一项功能(2022 年 2 月处于测试阶段),允许您指定清单文件(存储在 gcs 存储桶中的 CSV 文件)。参见:Transfer specific files or objects using a Manifest
我需要将数据从 gCloud 项目 A 中的一个存储桶复制到项目 B 中的另一个存储桶。如果 NodeJs 中存在任何实用程序可以执行此操作?
您可以使用Cloud Storage Client Libraries。要复制您的一个 Cloud Storage 存储桶中的对象,请参阅此示例代码:
const srcBucketName = 'your-source-bucket';
const srcFilename = 'your-file-name';
const destBucketName = 'target-file-bucket';
const destFileName = 'target-file-name';
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
async function copyFile() {
// Copies the file to the other bucket
await storage
.bucket(srcBucketName)
.file(srcFilename)
.copy(storage.bucket(destBucketName).file(destFileName));
console.log(
`gs://${srcBucketName}/${srcFilename} copied to gs://${destBucketName}/${destFileName}`
);
}
copyFile().catch(console.error);
此外,您需要确保您已 assigned a role 获得其他项目的必要权限。
您可能想要获取存储桶中的 blob 列表,下载它们,然后将它们上传到另一个存储桶(这就是 gsuilt cp -m gs://origin_bucket/** gs://destination_bucket/
所做的)。
这种方法的问题是你会消耗 CPU(在你这边),并且需要一些时间。
如果要将 所有 数据从一个存储桶移动到另一个存储桶,最好的方法是使用 Storage Transfer Service.
使用存储传输服务,您只需告诉源存储桶和目标存储桶,以及可选的时间表...google 将比您自己执行操作快得多。
另请记住,源和目标存储桶也可以是 GCS 存储桶、S3 或 Azure 存储存储桶。
看看google-provided Node Sample Code for Storage Transfer Service.
如果您只想传输一些文件,存储传输服务有一项功能(2022 年 2 月处于测试阶段),允许您指定清单文件(存储在 gcs 存储桶中的 CSV 文件)。参见:Transfer specific files or objects using a Manifest