管理转移作业

本页面介绍如何管理现有转移作业和操作。

如需创建新的转移作业,请参阅创建转移作业

修改转移作业配置

您可以修改现有转移作业的以下属性:

  • 转移作业的说明
  • Microsoft Azure Blob Storage 或 Amazon S3 数据源凭据
  • 应用于转移作业的任何过滤条件
  • 用于覆盖或删除文件的选项
  • 转移作业的时间表

gcloud CLI

如需修改现有转移作业配置,请使用 gcloud transfer jobs update 命令。

gcloud transfer jobs update \
  JOB_NAME \
  [options]

其中:

  • JOB_NAME 是要更新的作业的唯一名称。

  • 通过运行 gcloud transfer jobs update --help 列出可更新的选项。

例如,如需更新作业的来源和目标并移除其说明,请运行以下命令:

gcloud transfer jobs update \
  JOB_NAME \
  --source=gs://new-bucket-1 \
  --destination=gs://new-bucket-2 \
  --clear-description

Google Cloud 控制台

如需修改转移作业,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Storage Transfer Service 页面。

    转到 Storage Transfer Service

  2. 点击转移作业的说明。 此时系统会显示作业详情页面。

  3. 点击配置。 此时系统会显示转移作业配置。

  4. 如需更改某个项,请点击该项旁边的 修改

  5. 如需启动包含修改的作业,请点击启动运行作业

REST

如需修改转移作业配置,请使用 transferJobs.patch 方法。

从现有配置运行转移作业

您可以运行现有转移作业。在这种情况下,您可以启动无时间表的作业,或启动超出时间表范围的作业。

gcloud CLI

如需从现有配置运行转移作业,请使用 gcloud transfer jobs run

gcloud transfer jobs run JOB_NAME

您可以指定可选 --no-async 标志以阻止终端中的其他任务,直到转移操作完成。

Google Cloud 控制台

如需从现有配置运行转移作业,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Storage Transfer Service 页面。

    转到 Storage Transfer Service

  2. 点击转移作业的说明。 此时系统会显示作业详情页面。

  3. 如需启动转移作业,请点击启动运行

REST

如需运行转移作业,请使用 transferJobs.run 方法。

监控转移作业

gcloud CLI

如需实时监控作业进度,请使用 gcloud transfer jobs monitor

gcloud transfer jobs monitor JOB_NAME

该响应会显示当前操作、作业开始时间和转移的数据量。跳过的字节数和错误数也会计算在内。

Cloud Monitoring

如需详细了解如何将 Cloud Monitoring 与 Storage Transfer Service 搭配使用,请参阅监控转移作业

查看转移作业详情

gcloud CLI

如需查看转移作业详情,请使用 gcloud transfer jobs describe

gcloud transfer jobs describe JOB_NAME

如需查看此作业的最新操作,请将 latestOperationName 的值传递给 operations describe 命令:

gcloud transfer operations describe OPERATION_NAME

如需列出作业的所有转移操作,请使用 gcloud transfer operations list 命令:

gcloud transfer operations list --job-names=JOB_NAME

您可以通过列出多个作业(以英文逗号分隔)作为 --job-names 的值来查看多个作业的操作。省略 --job-names 可查看所有作业的操作。

Google Cloud 控制台

您可以通过 Google Cloud 控制台查看以下作业详情:

  • 作业说明和名称
  • 数据源类型和位置
  • 目标位置
  • 作业频率
  • 作业统计信息

如需查看转移作业详情,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Storage Transfer Service 页面。

    转到 Storage Transfer Service

  2. 点击转移作业的说明。 此时系统会显示作业详情页面。

如需显示特定运行的详细信息,请点击作业运行的开始时间。 以下作业信息可用:

  • 传输状态
  • 开始和停止时间
  • 时长
  • 进度
  • 转移的数据
  • 错误数量
  • 跳过的数据
  • 估算的平均速度

REST

如需查看转移作业的详细信息,请使用 transferJobs.get 方法返回有关特定转移作业的信息,例如其操作 ID。

客户端库

当您使用 transferJobs.create 时,将返回 TransferJob 资源。

您可以在使用 transferJobs.get 创建作业后检查转移状态。如果转移作业的操作已开始,则会返回包含已填充的 latestOperationName 字段的 TransferJob。相反,如果转移作业的操作尚未启动,则 latestOperationName 字段为空。

查看转移作业的状态

REST

使用 transferJobs get 发出请求:
GET https://storagetransfer.googleapis.com/v1/{jobName="name"}

Go

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/longrunning/autogen/longrunningpb"
	storagetransfer "cloud.google.com/go/storagetransfer/apiv1"
	"cloud.google.com/go/storagetransfer/apiv1/storagetransferpb"
)

func checkLatestTransferOperation(w io.Writer, projectID string, jobName string) (*storagetransferpb.TransferOperation, error) {
	// Your Google Cloud Project ID
	// projectID := "my-project-id"

	// The name of the job whose latest operation to check
	// jobName := "transferJobs/1234567890"
	ctx := context.Background()
	client, err := storagetransfer.NewClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("storagetransfer.NewClient: %w", err)
	}
	defer client.Close()

	job, err := client.GetTransferJob(ctx, &storagetransferpb.GetTransferJobRequest{
		JobName:   jobName,
		ProjectId: projectID,
	})
	if err != nil {
		return nil, fmt.Errorf("failed to get transfer job: %w", err)
	}

	latestOpName := job.LatestOperationName
	if latestOpName != "" {
		lro, err := client.LROClient.GetOperation(ctx, &longrunningpb.GetOperationRequest{
			Name: latestOpName,
		})
		if err != nil {
			return nil, fmt.Errorf("failed to get transfer operation: %w", err)
		}
		latestOp := &storagetransferpb.TransferOperation{}
		lro.Metadata.UnmarshalTo(latestOp)

		fmt.Fprintf(w, "the latest transfer operation for job %q is: \n%v", jobName, latestOp)
		return latestOp, nil
	} else {
		fmt.Fprintf(w, "Transfer job %q hasn't run yet, try again later", jobName)
		return nil, nil
	}
}

Java

想要寻找较早的示例?请参阅 Storage Transfer Service 迁移指南


import com.google.longrunning.Operation;
import com.google.storagetransfer.v1.proto.StorageTransferServiceClient;
import com.google.storagetransfer.v1.proto.TransferProto.GetTransferJobRequest;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferJob;
import com.google.storagetransfer.v1.proto.TransferTypes.TransferOperation;
import java.io.IOException;

public class CheckLatestTransferOperation {

  // Gets the requested transfer job and checks its latest operation
  public static void checkLatestTransferOperation(String projectId, String jobName)
      throws IOException {
    // Your Google Cloud Project ID
    // String projectId = "your-project-id";

    // The name of the job to check
    // String jobName = "myJob/1234567890";

    StorageTransferServiceClient storageTransfer = StorageTransferServiceClient.create();

    // Get transfer job and check latest operation
    TransferJob transferJob =
        storageTransfer.getTransferJob(
            GetTransferJobRequest.newBuilder().setJobName(jobName).setProjectId(projectId).build());
    String latestOperationName = transferJob.getLatestOperationName();

    if (!latestOperationName.isEmpty()) {
      Operation operation = storageTransfer.getOperationsClient().getOperation(latestOperationName);
      TransferOperation latestOperation =
          TransferOperation.parseFrom(operation.getMetadata().getValue());

      System.out.println("The latest operation for transfer job " + jobName + " is:");
      System.out.println(latestOperation.toString());

    } else {
      System.out.println(
          "Transfer job "
              + jobName
              + " hasn't run yet,"
              + " try again once the job starts running.");
    }
  }
}

Node.js


// Imports the Google Cloud client library
const {
  StorageTransferServiceClient,
} = require('@google-cloud/storage-transfer');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of the Google Cloud Platform Project that owns the job
// projectId = 'my-project-id'

// Storage Transfer Service job name
// jobName = 'transferJobs/1234567890'

// Creates a client
const client = new StorageTransferServiceClient();

/**
 * Checks the latest transfer operation for a given transfer job.
 */
async function checkLatestTransferOperation() {
  const [transferJob] = await client.getTransferJob({projectId, jobName});

  if (transferJob.latestOperationName) {
    const [transferOperation] = await client.operationsClient.getOperation({
      name: transferJob.latestOperationName,
    });

    const operation = JSON.stringify(transferOperation, null, 2);

    console.log(`Latest transfer operation for '${jobName}': ${operation}`);
  } else {
    console.log(`Transfer job '${jobName}' has not ran yet.`);
  }
}

checkLatestTransferOperation();

Python

想要寻找较早的示例?请参阅 Storage Transfer Service 迁移指南

from google.cloud import storage_transfer

def check_latest_transfer_operation(project_id: str, job_name: str):
    """Checks the latest transfer operation for a given transfer job."""

    client = storage_transfer.StorageTransferServiceClient()

    # The ID of the Google Cloud Platform Project that owns the job
    # project_id = 'my-project-id'

    # Storage Transfer Service job name
    # job_name = 'transferJobs/1234567890'

    transfer_job = client.get_transfer_job(
        {
            "project_id": project_id,
            "job_name": job_name,
        }
    )

    if transfer_job.latest_operation_name:
        response = client.transport.operations_client.get_operation(
            transfer_job.latest_operation_name
        )
        operation = storage_transfer.TransferOperation.deserialize(
            response.metadata.value
        )

        print(f"Latest transfer operation for `{job_name}`: {operation}")
    else:
        print(f"Transfer job {job_name} has not ran yet.")

暂停转移作业

您可以暂停当前正在进行的转移作业。暂停转移作业时,作业状态将保持不变,您可以稍后取消暂停。转移作业暂停时,时间表不会触发作业再次运行。

gcloud CLI

如需暂停转移作业,请将作业的当前操作名称传递给 gcloud transfer operations pause

gcloud transfer operations pause OPERATION_NAME

如需继续执行先前暂停的转移作业(即在暂停作业时的同一状况下重启作业),请使用 gcloud transfer operations resume

gcloud transfer operations resume OPERATION_NAME

Google Cloud 控制台

如需暂停转移作业,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Storage Transfer Service 页面。

    转到 Storage Transfer Service

  2. 点击转移作业的说明。 此时系统会显示作业详情页面。

  3. 点击暂停运行。当前操作的状态会显示为已暂停

如需继续执行先前暂停的转移作业(即在暂停作业时的同一状况下重启作业),请按以下步骤操作。

  1. 在 Google Cloud 控制台中,前往 Storage Transfer Service 页面。

    转到 Storage Transfer Service

  2. 点击转移作业的说明。 此时系统会显示作业详情页面。

  3. 点击恢复运行

    当前操作的状态显示为正在进行

REST

如需暂停转移作业,请使用 transferOperations.pause 方法。

停用转移作业

停用转移作业会阻止转移作业启动任何进一步的计划操作,或从控制台手动启动的操作。这不会阻止通过 API 或 jobs run gcloud 命令手动启动作业。

gcloud CLI

如需停用转移作业,请将作业的状态更新为 disabled

gcloud transfer jobs update JOB_NAME --status=disabled

如需重新激活作业,请设置 --status=enabled

Google Cloud 控制台

如需停用转移作业,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Storage Transfer Service 页面。

    转到 Storage Transfer Service

  2. 点击转移作业的说明。 此时系统会显示作业详情页面。

  3. 点击停用作业。此时将显示“停用转移作业?”对话框。

  4. 阅读对话框中的内容,然后点击确认以确认作业的停用操作。

    此时会在作业详情页面顶部显示一则通知,提醒您该作业已停用。

REST

使用 transferJobs.patch 方法将转移作业的状态设置为 DISABLED

删除转移作业

您可以删除不再需要的转移作业。删除作业将执行以下操作:

  • 停止作业中的任何现有转移作业。
  • 停止作业中的任何周期性转移作业。
  • 清空作业的配置详细信息。

作业删除操作属于永久性操作。删除转移作业后,系统会将其从转移作业作业列表中移除。转移作业信息将在 30 天后从 Storage Transfer Service 中完全删除。

或者,您也可以停用转移作业,这将保留作业页面中列出的作业,并允许您重新激活或修改作业。

gcloud CLI

如需删除转移作业,请使用 gcloud transfer jobs delete

gcloud transfer jobs delete JOB_NAME

Google Cloud 控制台

要删除转移作业,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Storage Transfer Service 页面。

    转到 Storage Transfer Service

  2. 选中您要删除的转移作业旁边的复选框。

  3. 点击删除作业

    此时会显示删除转移作业吗?对话框。

  4. 阅读对话框中的内容,然后在字段中输入作业的自动分配名称并点击删除以确认删除作业。

    该作业会从作业页面中移除。

REST

如需使用 REST API 删除转移作业,请参阅 transferJobs.delete 参考文档。

查看错误详情

如果在转移作业运行期间遇到错误,您可以查看错误详细信息以帮助排查错误。

如需查看转移作业运行的错误详情,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Storage Transfer Service 页面。

    转到 Storage Transfer Service

  2. 点击转移作业的说明。 此时系统会显示作业详情页面。

  3. 执行以下任一操作以显示作业详情:

    • 最近的作业运行:点击查看错误详情按钮或查看错误详情链接。系统随即会显示错误详情页面。

    • 历史作业运行

      1. 点击作业运行的开始时间

        系统会显示运行详情页面。

      2. 点击查看错误详情链接。

        此时系统会显示错误详情页面。

  4. 要显示每个显示的错误的其他详细信息,请点击 展开

  5. 如需过滤错误,请在输入属性名称或值字段中输入要过滤的属性。

    当您将光标置于该字段中时,系统会显示一个包含相关选项的下拉菜单,以帮助您构建过滤器。