インスタンス間でデータをコピーする

このページでは、以下の対象間でデータをコピーする方法について説明します。

  • Cloud Storage バケットから Filestore ファイル共有へ
  • 環境内のパソコンから Filestore ファイル共有へ
  • Filestore ファイル共有から Cloud Storage バケットへ

大量のデータを転送する場合は、次のオプションをおすすめします。

  • Transfer Appliance: オフライン、またはインターネット接続状況の悪い場所からデータを Google Cloud に転送する場合。
  • Storage Transfer Service: 別のクラウド プロダクトなどのオンライン データソースから Google Cloud にデータを転送する場合。
  • Transfer service for On-Premises Data: オンプレミスから Google Cloud にデータを転送する場合。

始める前に

以下の手順を行うには、gsutilgcloud コマンドライン ツールがインストールされている必要があります。これらのツールは両方とも gcloud CLI に含まれています。

Cloud Storage バケットから Filestore ファイル共有にデータをコピーする

gsutil rsync コマンドを使用して、Cloud Storage バケットから Compute Engine VM インスタンスにマウントされた Filestore ファイル共有にデータをコピーできます。gsutil rsync コマンドは Linux VM と Windows VM の両方で機能します。Linux VM インスタンスでは、rsync などの標準コマンドを使用してデータをコピーできます。

Linux

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    Compute Engine インスタンス ページに移動します。

  2. ターゲット Filestore のファイル共有がマウントされている Compute Engine VM インスタンスを選択し、[SSH] をクリックしてその VM インスタンスでターミナルを開きます。

  3. 次のコマンドを実行して、マウントされた Filestore ファイル共有にデータをコピーします。gsutil rsync コマンドで -r オプションを使用すると、指定した場所のサブディレクトリへの繰り返し同期を行うことができます。

    gsutil rsync gs://bucket mount-directory
    

    ここで

    • bucket は、データのコピー元になる Cloud Storage バケット、ディレクトリ、またはサブディレクトリです。
    • mount-directory は、Filestore ファイル共有がマウントされているクライアントのディレクトリです。

次のコマンドでは、data バケットとすべてのサブディレクトリのデータが /mnt/filer ディレクトリにコピーされます。

gsutil rsync -r gs://data /mnt/filer

Windows

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    Compute Engine インスタンス ページに移動します。

  2. ターゲット Filestore のファイル共有がドライブにマッピングされている Compute Engine VM インスタンスを選択し、[RDP] をクリックしてその VM へのリモート デスクトップ接続を開きます。

  3. 次のコマンドを実行して、マッピングされた Filestore ファイル共有にデータをコピーします。gsutil rsync コマンドで -r オプションを使用すると、指定した場所のサブディレクトリへの繰り返し同期を行うことができます。

    gsutil rsync gs://bucket mount-directory
    

    ここで

    • bucket は、データのコピー元になる Cloud Storage バケット、ディレクトリ、またはサブディレクトリです。
    • mount-directory は、Filestore ファイル共有がマウントされているクライアントのディレクトリです。

次のコマンドは、data バケットとすべてのサブディレクトリから、Filestore のファイル共有にマッピングされている Z: ドライブにデータをコピーします。

gsutil rsync -r gs://data Z:\

環境内のパソコンから Filestore ファイル共有にデータをコピーする

gcloud compute scp コマンドを使用して、環境内のパソコンから Compute Engine Linux VM インスタンスにマウントされた Filestore ファイル共有にデータをコピーできます。gcloud compute scp コマンドは、Windows VM インスタンスでは機能しません。

  1. SSH を使用して、コピーするデータを含むパソコンに接続します。
  2. 次のコマンドを実行して、gcloud CLI がインストールされているかどうかを確認します。

     which gcloud
    

    gcloud CLI がインストールされている場合、コマンドはインストール パスを返します。インストール パスが返されない場合は、gcloud CLI のインストールの手順に沿ってインストールします。

  3. マウントされたファイル共有にデータをコピーします。

     gcloud compute scp local-data-path client-name:/mount-directory --project=project-id --zone=zone
    

    ここで

    • local-data-path は、インスタンスにコピーするデータが格納されたローカル ファイルまたはディレクトリへのパスです。他のサブディレクトリからデータをコピーする場合は、local-data-path の後に --recurse フラグを使用します。
    • client-name は、Filestore ファイル共有がマウントされている Compute Engine VM インスタンスの名前です。
    • mount-directory は、Filestore ファイル共有がマウントされているクライアントのディレクトリです。
    • project-id は、クライアント VM インスタンスを含むプロジェクトの ID です。gcloud config set project project-id を使用して gcloud デフォルト プロジェクトを設定している場合は、このフラグを省略してデフォルト プロジェクトを使用できます。
    • zone は、Compute Engine VM インスタンスが存在するゾーンです。gcloud config set compute/zone zone を使用して gcloud デフォルト ゾーンを設定している場合は、このフラグを省略してデフォルト ゾーンを使用できます。

次のコマンドは、ローカルの /etc/acme/data ディレクトリとそのサブディレクトリのデータを、myproject プロジェクト、ゾーン us-central1-cnfs-client VM インスタンスの /mnt/filer ディレクトリにコピーします。

gcloud compute scp /etc/acme/data --recurse nfs-client:/mnt/filer --project myproject --zone us-central1-c

Filestore ファイル共有から Cloud Storage バケットにデータをコピーする

gsutil rsync コマンドを使用して、Compute Engine VM インスタンスにマウントされた Filestore ファイル共有のデータを Cloud Storage バケットにコピーできます。

続行する前に、まず、Compute Engine VM が Cloud Storage に書き込めることを確認します。

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    Compute Engine インスタンス ページに移動します。

  2. コピー元の Filestore ファイル共有がマウントされている Compute Engine VM インスタンスを選択します。

  3. インスタンスに [読み取りと書き込み] スコープがあるかどうかを確認します。

    1. インスタンス名をクリックして、[VM インスタンスの詳細] ページを開きます。
    2. [Cloud API アクセス スコープ] を展開し、[ストレージ] に [読み取りと書き込み] スコープがあるかどうかを確認します。

Compute Engine VM に [読み取りと書き込み] スコープがない場合は、次の手順を行います。

  1. [停止] をクリックして、Compute Engine インスタンスを停止します。
  2. インスタンスが停止したら、ページの上部にある [編集] をクリックします。
  3. [アクセス スコープ] で、[各 API にアクセス権を設定] を選択します。
  4. [ストレージ] で、[読み取りと書き込み] を選択し、[保存] をクリックします。
  5. インスタンスの更新が完了したら、ページの上部にある [開始] をクリックします。

Filestore ファイル共有から Cloud Storage バケットにデータをコピーするには、次の手順を実施します。

Linux

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    Compute Engine インスタンス ページに移動します。

  2. コピー元の Filestore ファイル共有がマウントされている Compute Engine VM インスタンスを選択し、[SSH] をクリックしてその VM インスタンスでターミナルを開きます。

  3. 次のコマンドを実行して、マウントされた Filestore ファイル共有からデータをコピーします。gsutil rsync コマンドで -r オプションを使用すると、指定した場所のサブディレクトリへの繰り返し同期を行うことができます。

    gsutil rsync mount-directory gs://bucket
    

    ここで

    • mount-directory は、Filestore ファイル共有がマウントされているクライアントのディレクトリです。
    • bucket は、データのコピー先となる Cloud Storage バケット、ディレクトリ、またはサブディレクトリです。

次のコマンドは、/mnt/filer ディレクトリとすべてのサブディレクトリのデータを archive バケットにコピーします。

gsutil rsync -r /mnt/filer gs://archive

Windows

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    Compute Engine インスタンス ページに移動します。

  2. コピー元の Filestore ファイル共有がマウントされている Compute Engine VM インスタンスを選択し、[RDP] をクリックしてその VM へのリモート デスクトップ接続を開きます。

  3. 次のコマンドを実行して、マッピングされた Filestore ファイル共有からデータをコピーします。gsutil rsync コマンドで -r オプションを使用すると、指定した場所のサブディレクトリへの繰り返し同期を行うことができます。

    gsutil rsync mapped-drive gs://bucket
    

    ここで

    • mapped-drive は、Filestore ファイル共有がマッピングされているクライアント上のドライブです。
    • bucket は、データのコピー先となる Cloud Storage バケット、ディレクトリ、またはサブディレクトリです。

次のコマンドは、マッピングされたドライブ Z: とすべてのサブディレクトリから archive バケットにデータをコピーします。

gsutil rsync -r Z:\ gs://archive

トラブルシューティング

gsutil を使用して Cloud Storage から Filestore インスタンスにデータをコピーする場合は、時間がかかることがあります。パフォーマンスを改善する方法の詳細については、Google Cloud リソース全体でパフォーマンスを改善するをご覧ください。