備份 Google 雲端儲存桶

備份 Google 雲端儲存桶

有沒有一種方法可以定期將一個儲存桶備份到另一個儲存桶中,以便萬一檔案從一個儲存桶中刪除,它們始終可以從另一個儲存桶中還原?

答案1

為此,您可以考慮多種選擇。

首先,您可以使用下列命令建立傳輸作業儲存傳輸服務(導航至“儲存”>“傳輸”)。可以將其配置為自動將資料從一個儲存桶備份到另一個儲存桶(您也可以選擇將其配置為將 AWS 儲存桶備份到 Google Cloud Storage)。 Transfer 是一個相當靈活的工具,除此之外,它允許您根據檔案前綴、修改時間或目標特定物件 URL 定義要傳輸的檔案。

另一種選擇是使用gsutil命令將檔案從一個儲存桶複製或同步到另一個儲存桶。如果您想自動執行此過程,您可以將該命令新增為實例上的 cronjob,並按照您選擇的時間/間隔運行它。

例如,要將來源儲存桶中的所有內容複製到目標儲存桶,您可以使用類似下列的命令:

$ gsutil cp -r gs://SOURCE_BUCKET_NAME/* gs://DESTINATION_BUCKET_NAME/

或者,您可以使用 gsutil rsync 和 -r 開關來同步來源儲存桶與目標儲存桶的內容。例如:

$ gsutil rsync -r gs://SOURCE_BUCKET_NAME gs://DESTINATION_BUCKET_NAME/

如果您擔心刪除文件,值得研究一下雲端儲存物件版本控制。如果啟用此功能,如果儲存桶中的物件已覆寫或刪除,則會建立原始物件的存檔版本,以便日後需要時可以擷取原始物件。這本質上可以保護物件免於意外刪除。

值得注意的是,對於物件版本控制,每個歸檔物件佔用的空間與活動物件版本一樣多,並且您為歸檔儲存和活動儲存支付的費用相同。歸檔物件可以透過以下方式進行管理(例如,達到一定年齡時自動刪除)物件生命週期管理

答案2

您可以使用 Cloud Scheduler 和 Cloud Functions 設定自動備份的 cron 作業。

使用 Node.js,您可以獲得檔案名稱列表,例如以下程式碼:

const [sourceFiles] = await sourceBucket.getFiles({
    prefix: 'data/'
});

然後將檔案複製到另一個儲存桶,如下程式碼:

let promises = [];
for (let fileName of sourceFileNames) {
  const copyFilePromise = sourceBucket.file(fileName).copy(destBucket.file(`${dateStr}/${fileName}`));
  promises.push(copyFilePromise);
}
await Promise.all(promises);

相關內容