あるバケットからファイルが削除された場合でも、別のバケットからいつでも復元できるように、あるバケットを別のバケットに定期的にバックアップする方法はありますか?
答え1
これにはいくつかの選択肢が考えられます。
まず、転送ジョブを作成するには、ストレージ転送サービス(「ストレージ」>「転送」に移動します)。これは、あるバケットから別のバケットにデータを自動的にバックアップするように構成できます (AWS バケットを Google Cloud Storage にバックアップするように構成するオプションもあります)。転送は非常に柔軟なツールであり、とりわけ、ファイルのプレフィックス、変更時刻、またはターゲットの特定のオブジェクト URL に基づいて転送するファイルを定義できます。
もう 1 つのオプションは、コマンドを使用して、あるバケットから別のバケットにファイルをコピーまたは同期することです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);