このページでは、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 のデータはバケットに整理されます。新しいバケットを作成する手順は次のとおりです。
Cmdlets
New-GcsBucket
コマンドレットを使用して新しいバケットを作成します。
$bucket = "my-gcs-bucket" New-GcsBucket $bucket
プロバイダ
バケットは、gs:\
ドライブのルートにあるフォルダです。そのレベルに新しいアイテムを作成すると、新しいバケットが作成されます。
cd gs:\ $bucket = "my-gcs-bucket" mkdir $bucket
バケットへのファイルのアップロード
1 つのファイルまたはディレクトリ全体をバケットにアップロードできます。
Cmdlets
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 }
データの検索
データは、コマンドレットを使用して検索することも、プロバイダを使用して一般的なファイル検索コマンドレットで検索することもできます。
Cmdlets
Get-GcsObject
を使用してバケットのオブジェクト全体を検索できます。これは Out-GridView
コマンドレットと組み合わせてデータを表示するときに有効です。
Get-GcsObject $bucket | Select Name, Size | Out-GridView
プロバイダ
Get-ChildItem
またはそのエイリアス(dir
、ls
、gci
)のいずれかを使用できます。
-Recurse
パラメータを使用して、すべての論理フォルダ内を検索できます。
cd gs:\my-gcs-bucket ls -Recurse
データの読み取り
プロバイダを使用してデータを読み取る場合は、標準の Get-Content
コマンドレットを使用します。または、Read-GcsObject
コマンドレットを使用します。
Cmdlets
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
コマンドレット、またはそのエイリアス(cat
、gc
、type
)のいずれかを使用します。
cd gs:\my-gcs-bucket cat my-object-name
データの削除
プロバイダを使用してデータを削除する場合は、標準の Remove-Item
コマンドレットを使用します。または、Remove-GcsObject
コマンドレットを使用します。
Cmdlets
Cloud Storage 内のデータを削除するには、Remove-GcsObject
コマンドレットを使用します。
Get-GcsObject $bucket | Remove-GcsObject
プロバイダ
Cloud Storage 内のデータを削除するには、Remove-Item
コマンドレットまたはそのエイリアス(del
、rm
、erase
)のいずれかを使用します。
cd gs:\my-gcs-bucket rm my-object-name