Google Cloud Storage へのデータのバックアップ

このページでは、Cloud Tools for PowerShell を使用してローカルマシンから Cloud Storage にデータをバックアップする方法について説明します。Cloud Tools for PowerShell で Cloud Storage リソースにアクセスするには、他のほとんどのリソースとは違って 2 つの方法があります。1 つはコマンドレット、もう 1 つは PowerShell プロバイダです。

プロバイダを使用すると、Cloud Storage のバケットやオブジェクトに、使い慣れたファイル システムのコマンドを使用してファイル システムのようにアクセスできます。ただし、プロバイダにはいくつかの制約があります。まず、すべての有効なオブジェクト名が有効なプロバイダパスに変換されるわけではありません。また、プロバイダを使用して ACL を管理することはできません。これらの高度なケースに対してはコマンドレットを使用できます。 Cloud Storage コマンドレットの詳細については、Cloud Tools for PowerShell コマンドレット リファレンスをご覧ください。

データのアップロード

Cloud Storage のデータはバケットに整理されます。新しいバケットを作成する手順は次のとおりです。

コマンドレット

New-GcsBucket コマンドレットを使用して新しいバケットを作成します。

$bucket = "my-gcs-bucket"
New-GcsBucket $bucket

プロバイダ

バケットは、gs:\ ドライブのルートにあるフォルダです。そのレベルに新しいアイテムを作成すると、新しいバケットが作成されます。

cd gs:\
$bucket = "my-gcs-bucket"
mkdir $bucket

バケットへのファイルのアップロード

1 つのファイルまたはディレクトリ全体をバケットにアップロードできます。

コマンドレット

New-GcsObject を使用してください。宛先バケットとオブジェクト名をパラメータとして指定します。新しいストレージ オブジェクトのコンテンツがどこから取得されるかは、使用するパラメータ セットによって異なります。

ローカル ファイルの内容を Cloud Storage にアップロードするには、-File パラメータを使用してファイルパスを指定します。あるいは、PowerShell パイプラインを介してオブジェクトのコンテンツを文字列として渡すことも、-Value パラメータを使用することもできます。

-Folder パラメータを使用してフォルダパスを指定することで、ローカル ディスクから Cloud Storage にディレクトリ全体をアップロードできます。フォルダを Cloud Storage バケットのルートに直接アップロードしない場合は、-ObjectNamePrefix を使用して、アップロードするすべてのオブジェクトに適用される接頭辞を指定します。

# Upload the folder LogFiles and its content to the root of the widget bucket.
New-GcsObject -Bucket "widget" -Folder "C:\inetpub\logs\LogFiles"

# Upload the folder LogFiles and its content to directory Test in the widget bucket.
New-GcsObject -Bucket "widget" -Folder "C:\inetpub\logs\LogFiles" -ObjectNamePrefix "Test"

プロバイダ

New-Item を使用してください。作成するアイテムのパスを指定する必要があります。絶対パスでも相対パスでもかまいません。新しいストレージ オブジェクトの内容は、-Value パラメータに文字列として、または -File パラメータにファイルパスを指定することで指定できます。

New-Item gs:\my-gcs-bucket\new-object -File $file

次のスニペットによって、ローカル ディスクのディレクトリ全体を Cloud Storage にアップロードします。

cd $folder
$files = Get-ChildItem -Recurse
$data = @()
foreach ($file in $files) {
      $objectPath = $file | Resolve-Path -Relative
      $data += @{file = $file; objectPath = $objectPath}
}
cd gs:\my-gcs-bucket
foreach($element in $data) {
      Write-Host "`t${$element.objectPath}"
      New-Item $element.objectPath -File $element.file
}

データの検索

データは、コマンドレットを使用して検索することも、プロバイダを使用して一般的なファイル検索コマンドレットで検索することもできます。

コマンドレット

Get-GcsObject を使用してバケットのオブジェクト全体を検索できます。これは Out-GridView コマンドレットと組み合わせてデータを表示するときに有効です。

Get-GcsObject $bucket | Select Name, Size | Out-GridView

プロバイダ

Get-ChildItem またはそのエイリアス(dirlsgci)のいずれかを使用できます。 -Recurse パラメータを使用して、すべての論理フォルダ内を検索できます。

cd gs:\my-gcs-bucket
ls -Recurse

データの読み取り

プロバイダを使用してデータを読み取る場合は、標準の Get-Content コマンドレットを使用します。または、Read-GcsObject コマンドレットを使用します。

コマンドレット

Cloud Storage オブジェクトの内容を読み取るには、Read-GcsObject コマンドレットを使用します。デフォルトでは、このコマンドレットはオブジェクトのコンテンツを文字列として読み取り、コンテンツを PowerShell パイプラインに書き込みます。-OutFile パラメータを指定して、オブジェクトのコンテンツをローカル ディスクにダウンロードできます。

Read-GcsObject $bucket "timestamp.txt" | Write-Host
Read-GcsObject $bucket "logo.png" `
    -OutFile "$Env:UserProfile\pictures\logo.png"

プロバイダ

Cloud Storage オブジェクトの内容を読み取るには、Get-Content コマンドレット、またはそのエイリアス(catgctype)のいずれかを使用します。

cd gs:\my-gcs-bucket
cat my-object-name

データの削除

プロバイダを使用してデータを削除する場合は、標準の Remove-Item コマンドレットを使用します。または、Remove-GcsObject コマンドレットを使用します。

コマンドレット

Cloud Storage 内のデータを削除するには、Remove-GcsObject コマンドレットを使用します。

Get-GcsObject $bucket | Remove-GcsObject

プロバイダ

Cloud Storage 内のデータを削除するには、Remove-Item コマンドレットまたはそのエイリアス(delrmerase)のいずれかを使用します。

cd gs:\my-gcs-bucket
rm my-object-name