将数据备份到 Cloud Storage

此页面介绍如何使用 Cloud Tools for PowerShell 将本地计算机中的数据备份到 Cloud Storage。与大多数资源不同,Cloud Tools for PowerShell 提供两种访问 Cloud Storage 资源的方法,即 cmdlet 和 PowerShell 提供程序。

提供程序允许您使用熟悉的文件系统命令来访问存储分区和对象(例如文件系统)。不过,提供程序也存在一些限制。并非所有法定对象名称都能转换为法定提供程序路径。您无法使用提供程序来管理 ACL。对于这些高级用例,您可以使用 cmdlet。 如需详细了解 Cloud Storage cmdlet,请参阅 Cloud Tools for PowerShell cmdlet 参考

上传数据

Cloud Storage 中的数据会整理到存储分区中。您可以通过以下方法创建新的存储分区:

Cmdlet

使用 New-GcsBucket cmdlet 创建一个新的存储分区:

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

提供商

存储分区是 gs:\ 硬盘根目录下的文件夹。创建该级别的新项将创建新的存储分区。

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

将文件上传到存储分区

您可以通过以下方法将单个文件或整个目录上传到存储分区:

Cmdlet

使用 New-GcsObject。此操作需要将目标存储分区和对象名称用作参数。新存储对象的内容来源取决于您使用的参数集。

您可以使用 -File 参数并指定文件路径,将本地文件的内容上传到 Cloud Storage。或者,您可以通过 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
}

搜索数据

您可以使用 cmdlet 搜索数据,也可以使用提供程序,通过常见文件搜索 cmdlet 搜索数据。

Cmdlet

您可以使用 Get-GcsObject 搜索存储分区的对象。在与 Out-GridView cmdlet 结合使用以直观呈现数据时,此方法非常有用:

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

提供商

您可以使用 Get-ChildItem 或其别名:dirlsgci。 可以使用 -Recurse 参数查看所有逻辑文件夹:

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

读取数据

要通过提供程序读取数据,请使用标准 Get-Content cmdlet。或者,使用 Read-GcsObject cmdlet。

Cmdlet

要读取 Cloud Storage 对象的内容,请使用 Read-GcsObject cmdlet。默认情况下,此 cmdlet 将对象的内容作为字符串读取并将其写入 PowerShell 流水线。您也可以指定 -OutFile 参数以将对象的内容下载到本地磁盘:

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

提供商

要读取 Cloud Storage 对象的内容,请使用 Get-Content cmdlet 或其别名:catgctype

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

删除数据

要通过提供程序删除数据,请使用标准 Remove-Item cmdlet。或者,使用 Remove-GcsObject cmdlet。

Cmdlet

要移除 Cloud Storage 中的任何数据,请使用 Remove-GcsObject cmdlet:

Get-GcsObject $bucket | Remove-GcsObject

提供商

要移除 Cloud Storage 中的数据,请使用 Remove-Item cmdlet 或其别名 delrmerase

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