クイック スタート: Azure CLI を使用した Azure ファイル共有の作成および管理Quickstart: Create and manage Azure file shares using Azure CLI

このガイドでは、Azure CLI を使用して Azure ファイル共有を操作する方法の基本について説明します。This guide walks you through the basics of working with Azure file shares with the Azure CLI. Azure ファイル共有は他のファイル共有と似ていますが、クラウドに格納され、Azure プラットフォームによって支えられています。Azure file shares are just like other file shares, but stored in the cloud and backed by the Azure platform. Azure ファイル共有は、業界標準の SMB プロトコルをサポートし、複数のマシン、アプリケーション、およびインスタンス間にわたってファイル共有を可能にします。Azure File shares support the industry standard SMB protocol and enable file sharing across multiple machines, applications, and instances.

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。You can use either Bash or PowerShell with Cloud Shell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を開始するには:To start Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [使ってみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. 新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を開始します。Start Cloud Shell.

  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Enter キーを選択して、コードを実行します。Select Enter to run the code.

Azure CLI をローカルにインストールして使用する場合、この記事の手順を実行するには Azure CLI バージョン 2.0.4 以降を実行している必要があります。If you decide to install and use Azure CLI locally, for the steps in this article, you must be running Azure CLI version 2.0.4 or later. Azure CLI のバージョンを確認するには、az --version を実行します。Run az --version to find your Azure CLI version. インストールまたはアップグレードする必要がある場合は、「Azure CLI 2.0 のインストール」を参照してください。If you need to install or upgrade, see Install Azure CLI 2.0.

既定では、Azure CLI コマンドは JavaScript Object Notation (JSON) を返します。By default, Azure CLI commands return JavaScript Object Notation (JSON). JSON は、REST API との間でメッセージを送受信するための標準的な方法です。JSON is the standard way to send and receive messages from REST APIs. JSON 応答を操作しやすくするために、この記事のいくつかの例では、Azure CLI コマンドで query パラメーターを使用しています。To facilitate working with JSON responses, some of the examples in this article use the query parameter on Azure CLI commands. このパラメーターでは、JSON を解析するために JMESPath クエリ言語が使用されます。This parameter uses the JMESPath query language to parse JSON. JMESPath クエリ言語に従って Azure CLI コマンドの結果を使用する方法の詳細については、JMESPath のチュートリアルを参照してください。To learn more about how to use the results of Azure CLI commands by following the JMESPath query language, see the JMESPath tutorial.

リソース グループを作成するCreate a resource group

リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。A resource group is a logical container in which Azure resources are deployed and managed. まだ Azure リソース グループがない場合は、az group create コマンドを使用して作成できます。If you don't already have an Azure resource group, you can use the az group create command to create one.

次の例では、myResourceGroup という名前のリソース グループを米国西部 2 に作成します。The following example creates a resource group named myResourceGroup in the West US 2 location:

export resourceGroupName="myResourceGroup"
region="westus2"

az group create \
    --name $resourceGroupName \
    --location $region \
    --output none

ストレージ アカウントを作成するCreate a storage account

ストレージ アカウントは、Azure ファイル共有またはその他のストレージ リソース (BLOB やキューなど) をデプロイできるストレージの共有プールです。A storage account is a shared pool of storage in which you can deploy Azure file shares or other storage resources, such as blobs or queues. 1 つのストレージ アカウントに格納できるファイル共有の数に制限はありません。A storage account can contain an unlimited number of file shares. 1 つの共有に格納できるファイルの数に制限はなく、ストレージ アカウントの容量の上限までファイルを格納できます。A share can store an unlimited number of files, up to the capacity limits of the storage account.

次の例では、az storage account create コマンドを使用してストレージ アカウントを作成します。The following example creates a storage account using the az storage account create command. ストレージ アカウント名は一意である必要があります。そのため、$RANDOM を使用し、名前に数を追加して一意にします。Storage account names must be unique, so use $RANDOM to append a number to the name to make it unique.

export storageAccountName="mystorageacct$RANDOM"

az storage account create \
    --resource-group $resourceGroupName \
    --name $storageAccountName \
    --location $region \
    --kind StorageV2 \
    --sku Standard_LRS \
    --enable-large-file-share \
    --output none

注意

5 TiB (共有あたり最大 100 TiB) を超える共有が利用できるのは、ローカル冗長 (LRS) およびゾーン冗長 (ZRS) のストレージ アカウントだけです。Shares greater than 5 TiB (up to a maximum of 100 TiB per share) are only available in locally redundant (LRS) and zone redundant (ZRS) storage accounts. geo 冗長 (GRS) または geo ゾーン冗長 (GZRS) ストレージ アカウントを作成する場合は、--enable-large-file-share パラメーターを削除してください。To create a geo-redundant (GRS) or geo-zone-redundant (GZRS) storage account, remove the --enable-large-file-share parameter.

ストレージ アカウント キーを取得するGet the storage account key

ストレージ アカウント キーは、ストレージ アカウント内のリソースへのアクセスを制御するために使用されます。Storage account keys control access to resources in a storage account. キーは、ストレージ アカウントの作成時に自動的に作成されます。The keys are automatically created when you create a storage account. ストレージ アカウントのストレージ アカウント キーは、az storage account keys list コマンドを使用して取得できます。You can get the storage account keys for your storage account by using the az storage account keys list command:

export storageAccountKey=$(az storage account keys list \
    --resource-group $resourceGroupName \
    --account-name $storageAccountName \
    --query "[0].value" | tr -d '"')

Azure ファイル共有を作成するCreate an Azure file share

これで、最初の Azure ファイル共有を作成できます。Now, you can create your first Azure file share. az storage share create コマンドを使用してファイル共有を作成します。Create file shares by using the az storage share create command. この例では、myshare という名前の Azure ファイル共有を作成します。This example creates an Azure file share named myshare:

shareName="myshare"

az storage share create \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --name $shareName \
    --quota 1024 \
    --output none

共有名には、小文字の英字、数字、単一ハイフンのみを使用することができます (ただし、名前をハイフンで始めることはできません)。Share names can contain only lowercase letters, numbers, and single hyphens (but they can't start with a hyphen). ファイル共有とファイルの名前付けの詳細については、「Naming and referencing shares, directories, files, and metadata (共有、ディレクトリ、ファイル、およびメタデータの名前付けおよび参照)」を参照してください。For complete details about naming file shares and files, see Naming and referencing shares, directories, files, and metadata.

Azure ファイル共有を使用するUse your Azure file share

Azure Files では、業界標準の Server Message Block (SMB) プロトコルファイル REST プロトコルの 2 つの方法で Azure ファイル共有内のファイルとフォルダーを操作できます。Azure Files provides two methods of working with files and folders within your Azure file share: the industry standard Server Message Block (SMB) protocol and the File REST protocol.

SMB を使用してファイル共有をマウントするには、お使いの OS に基づいて次のドキュメントを参照してください。To mount a file share with SMB, see the following document based on your OS:

ファイル REST プロトコルで Azure ファイル共有を使用するUsing an Azure file share with the File REST protocol

ファイル REST プロトコルは直接使用する (手動で REST HTTP 呼び出しを作成する) こともできますが、ファイル REST プロトコルを使用する最も一般的な方法は、Azure CLI、Azure PowerShell モジュール、または Azure Storage SDK を使用することです。いずれの方法でも、任意のスクリプト言語またはプログラミング言語でファイル REST プロトコルの便利なラッパーが提供されます。It is possible work directly with the File REST protocol directly (handcrafting REST HTTP calls yourself), but the most common way to use the File REST protocol is to use the Azure CLI, the Azure PowerShell module, or an Azure Storage SDK, all of which provide a nice wrapper around the File REST protocol in the scripting/programming language of your choice.

Azure Files のほとんどのユーザーは、SMB プロトコルを介して Azure ファイル共有を操作したいと考えていると予想されます。その方が、使用できることを期待している既存のアプリケーションやツールを使用できるためです。しかし、SMB よりもファイル REST API を使用する方が有益な理由がいくつかあります。その理由を次に示します。We expect most uses of Azure Files will want to work with their Azure file share over the SMB protocol, as this allows them to use the existing applications and tools they expect to be able to use, but there are several reasons why it is advantageous to use the File REST API rather than SMB, such as:

  • (SMB 経由でファイル共有をマウントできない) Azure Bash Cloud Shell からファイル共有を参照している。You are browsing your file share from the Azure Bash Cloud Shell (which cannot mount file shares over SMB).
  • Azure Functions のようなサーバーレス リソースを利用している。You are taking advantage of serverless resources, such as Azure Functions.
  • 多数の Azure ファイル共有を対話的に操作する付加価値サービスを作成している (バックアップやウイルス対策スキャンの実行など)。You are creating a value-add service that will interact with many Azure file shares, such as performing backup or antivirus scans.

次の例は、Azure CLI を使用してファイル REST プロトコルでお客様の Azure ファイル共有を操作する方法を示しています。The following examples show how to use the Azure CLI to manipulate your Azure file share with the File REST protocol.

ディレクトリを作成するCreate a directory

Azure ファイル共有のルートに myDirectory という名前の新しいディレクトリを作成するには、az storage directory create コマンドを使用します。To create a new directory named myDirectory at the root of your Azure file share, use the az storage directory create command:

az storage directory create \
   --account-name $storageAccountName \
   --account-key $storageAccountKey \
   --share-name $shareName \
   --name "myDirectory" \
   --output none

ファイルをアップロードするUpload a file

az storage file upload コマンドを使用してファイルをアップロードする方法を示すために、最初に Cloud Shell のスクラッチ ドライブ上に、アップロードするファイルを作成します。To demonstrate how to upload a file by using the az storage file upload command, first create a file to upload on the Cloud Shell scratch drive. 次の例では、ファイルを作成してアップロードします。In the following example, you create and then upload the file:

cd ~/clouddrive/
date > SampleUpload.txt

az storage file upload \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --share-name $shareName \
    --source "SampleUpload.txt" \
    --path "myDirectory/SampleUpload.txt"

Azure CLI をローカルで実行している場合は、~/clouddrive を実際のマシンに存在するパスに置き換えてください。If you're running Azure CLI locally, substitute ~/clouddrive with a path that exists on your machine.

ファイルのアップロード後、az storage file list コマンドを使用して、ファイルが Azure ファイル共有にアップロードされたことを確認できます。After you upload the file, you can use the az storage file list command to make sure that the file was uploaded to your Azure file share:

az storage file list \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --share-name $shareName \
    --path "myDirectory" \
    --output table

ファイルをダウンロードするDownload a file

az storage file download コマンドを使用して、アップロードしたファイルのコピーを Cloud Shell のスクラッチ ドライブにダウンロードできます。You can use the az storage file download command to download a copy of the file that you uploaded to the Cloud Shell scratch drive:

# Delete an existing file by the same name as SampleDownload.txt, if it exists, because you've run this example before
rm -f SampleDownload.txt

az storage file download \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --share-name $shareName \
    --path "myDirectory/SampleUpload.txt" \
    --dest "SampleDownload.txt" \
    --output none

ファイルのコピーCopy files

よくあるタスクの 1 つとして、ファイル共有間でのファイルのコピーがあります。A common task is to copy files from one file share to another file share. この機能を示すために、新しい共有を作成します。To demonstrate this functionality, create a new share. az storage file copy コマンドを使用して、アップロードしたファイルをこの新しい共有にコピーします。Copy the file that you uploaded to this new share by using the az storage file copy command:

otherShareName="myshare2"

az storage share create \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --name $otherShareName \
    --quota 1024 \
    --output none

az storage directory create \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --share-name $otherShareName \
    --name "myDirectory2" \
    --output none

az storage file copy start \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --source-share $shareName \
    --source-path "myDirectory/SampleUpload.txt" \
    --destination-share $otherShareName \
    --destination-path "myDirectory2/SampleCopy.txt"

次に、新しい共有のファイルを一覧表示すると、コピーしたファイルが表示されます。Now, if you list the files in the new share, you should see your copied file:

az storage file list \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --share-name $otherShareName \
    --path "myDirectory2" \
    --output table

az storage file copy start コマンドは、Azure ファイル共有間でのファイル移動には便利ですが、大きなデータの移動や移行には、rsync (macOS および Linux) や robocopy (Windows) をお勧めします。While the az storage file copy start command is convenient for file moves between Azure file shares, for migrations and larger data movements, we recommend rsync on macOS and Linux and robocopy on Windows. rsyncrobocopy では、FileREST API ではなく SMB を使用して、データ移動が実行されます。rsync and robocopy use SMB to perform the data movements instead of the FileREST API.

共有スナップショットの作成と管理Create and manage share snapshots

Azure ファイル共有で実行できるもう 1 つの便利なタスクとして、共有スナップショットの作成があります。Another useful task that you can do with an Azure file share is create share snapshots. スナップショットでは、Azure ファイル共有の特定時点のコピーが保存されます。A snapshot preserves a point-in-time copy of an Azure file share. 共有スナップショットは、場合によっては既に使い慣れている、次のようなオペレーティング システム テクノロジに類似しています。Share snapshots are similar to some operating system technologies that you might already be familiar with:

az storage share snapshot コマンドを使用して、共有スナップショットを作成できます。You can create a share snapshot by using the az storage share snapshot command:

snapshot=$(az storage share snapshot \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --name $shareName \
    --query "snapshot" | tr -d '"')

共有スナップショットの内容の参照Browse share snapshot contents

変数 $snapshot でキャプチャした共有スナップショットのタイム スタンプを az storage file list コマンドに渡すことで、共有スナップショットの内容を参照できます。You can browse the contents of a share snapshot by passing the time stamp of the share snapshot that you captured in the $snapshot variable to the az storage file list command:

az storage file list \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --share-name $shareName \
    --snapshot $snapshot \
    --output table

共有スナップショットの一覧表示List share snapshots

共有に関して取得したスナップショットの一覧を表示するには、次のコマンドを使用します。To see the list of snapshots that you've taken for your share, use the following command:

az storage share list \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --include-snapshot \
    --query "[? name== '$shareName' && snapshot!=null].snapshot" \
    --output tsv

共有スナップショットからの復元Restore from a share snapshot

前に使用した az storage file copy start コマンドを使用してファイルを復元できます。You can restore a file by using the az storage file copy start command that you used earlier. 最初に、スナップショットからファイルを復元するために、アップロードした SampleUpload.txt ファイルを削除します。First, delete the SampleUpload.txt file that you uploaded, so you can restore it from the snapshot:

# Delete SampleUpload.txt
az storage file delete \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --share-name $shareName \
    --path "myDirectory/SampleUpload.txt" \
    --output none

# Build the source URI for a snapshot restore
URI=$(az storage account show \
    --resource-group $resourceGroupName \
    --name $storageAccountName \
    --query "primaryEndpoints.file" | tr -d '"')

URI=$URI$shareName"/myDirectory/SampleUpload.txt?sharesnapshot="$snapshot

# Restore SampleUpload.txt from the share snapshot
az storage file copy start \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --source-uri $URI \
    --destination-share $shareName \
    --destination-path "myDirectory/SampleUpload.txt"

共有スナップショットの削除Delete a share snapshot

az storage share delete コマンドを使用して、共有スナップショットを削除できます。You can delete a share snapshot by using the az storage share delete command. --snapshot パラメーターへの $SNAPSHOT 参照を含む変数を使用します。Use the variable that contains the $SNAPSHOT reference to the --snapshot parameter:

az storage share delete \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --name $shareName \
    --snapshot $snapshot \
    --output none

リソースをクリーンアップするClean up resources

完了したら、az group delete コマンドを使用して、リソース グループとすべての関連リソースを削除できます。When you are done, you can use the az group delete command to remove the resource group and all related resources:

az group delete --name $resourceGroupName

また、リソースを個別に削除することもできます。Alternatively, you can remove resources individually.

  • この記事用に作成した Azure ファイル共有を削除するには、次のコマンドを使用します。To remove the Azure file shares that you created for this article:

    az storage share list \
            --account-name $storageAccountName \
            --account-key $storageAccountKey \
            --query "[].name" \
            --output tsv | \
        xargs -L1 bash -ec '\
            az storage share delete \
                --account-name "$storageAccountName" \
                --account-key "$storageAccountKey" \
                --name $0 \
                --delete-snapshots include \
                --output none'
    
  • ストレージ アカウント自体を削除するには、次のコマンドを使用します To remove the storage account itself. (この場合、作成した Azure ファイル共有と、Azure Blob Storage コンテナーなど、作成したその他のストレージ リソースが暗黙的に削除されます)。(This implicitly removes the Azure file shares that you created, and any other storage resources that you might have created, such as an Azure Blob storage container.)

    az storage account delete \
        --resource-group $resourceGroupName \
        --name $storageAccountName \
        --yes
    

次のステップNext steps