azcopy sync

元の場所を同期先の場所にレプリケートします。 この記事では、azcopy sync コマンドの詳細なリファレンスを提供します。 元の場所と宛先の間で BLOB を同期する方法の詳細については、「AzCopy v10 を使用して Azure Blob Storage と同期する」を参照してください。 Azure Files については、「ファイルを同期する」を参照してください。

概要

最後に変更された時刻が比較に使用されます。 同期先の最終更新時刻の方が新しい場合、ファイルはスキップされます。 または、--compare-hash フラグを使用して、MD5 ハッシュが異なるファイルのみを転送することもできます。 サポートされているペアは次のとおりです。

  • ローカル<-> Azure BLOB / Azure File (SAS 認証または OAuth 認証のいずれかを使用できます)
  • Azure Blob <-> Azure BLOB (SAS または OAuth 認証のいずれかを使用できます)
  • Azure ファイル <-> Azure ファイル (ソースには SAS が含まれているか、パブリックにアクセス可能である必要があります。宛先には SAS 認証が使用されている必要があります)
  • Azure BLOB < - > Azure ファイル

sync コマンドは、いくつかの点で copy コマンドと異なります。

  1. 既定では、再帰フラグは true で、sync によってすべてのサブディレクトリがコピーされます。 再帰フラグが false の場合、sync はディレクトリ内の最上位レベルのファイルのみがコピーされます。
  2. 仮想ディレクトリ間で同期する際に仮想ディレクトリの 1 つと同じ名前の BLOB がある場合は、パスの末尾にスラッシュ (例を参照) を追加します。
  3. "delete-destination" フラグが true または prompt に設定されている場合は、sync を実行するとソースに存在しないファイルと BLOB を削除します。

ガイドライン

既定では、sync コマンドではファイル名と最後に変更されたタイムスタンプが比較されます。 最終変更タイムスタンプの代わりに MD5 ハッシュを使用するように、--compare-hash フラグを使用してその動作をオーバーライドできます。 省略可能な --delete-destination フラグの値を true または prompt に設定すると、コピー元のディレクトリにファイルがもう存在しなくなると、コピー先のディレクトリからそれらのファイルが削除されます。

  • --delete-destination フラグを true に設定すると、AzCopy では、プロンプトが表示されずにファイルが削除されます。 AzCopy でファイルが削除される前にプロンプトを表示する場合、--delete-destination フラグを prompt に設定します。

  • --delete-destination フラグを prompt または false に設定する場合は、sync コマンドではなく copy コマンドを使用し、--overwrite パラメーターを ifSourceNewer に設定することを検討してください。 copy コマンドでは、消費されるメモリ量が少なくなり、発生する課金コストが減ります。これは、コピー操作では、ファイルを移動する前にコピー元またはコピー先のインデックスを作成する必要がないからです。

  • --compare-hash フラグを使用する予定がない場合、sync コマンドを実行するマシンでは、ファイルを転送する必要があるかどうかの判断において最終変更時刻が重要になるため、正確なシステム クロックが必要になります。 システムのクロック スキューが大きい場合は、sync コマンドの実行を計画している時刻にあまりに近い時点で、コピー先でのファイル変更を行わないようにしてください。

  • AzCopy では、サーバー間 API を使用してストレージ アカウント間でデータを同期します。 つまり、データはストレージ サーバー間で直接コピーされます。 ただし、AzCopy では、各転送が設定され、監視されます。大規模なストレージ アカウント (たとえば、数百万の BLOB を含むアカウント) の場合、AzCopy ではこれらのタスクを実行するために大量のコンピューティング リソースが必要になる場合があります。 したがって、仮想マシン (VM) から AzCopy を実行している場合、VM に負荷を処理するのに十分なコア/メモリがあることを確認します。

  • Blob Storage の場合、 フラグを使用する前に論理的な削除--delete-destination=prompt|true機能を有効にすることで、誤って削除されないようにすることができます。

上級

ファイル拡張子を指定しない場合は、AzCopy はローカルディスクからアップロードするときに、ファイル拡張子またはコンテンツに基づいてファイルのコンテンツの種類を自動的に検出します。

組み込みのルックアップ テーブルは小さいですが、Unix では、ローカルシステムの mime.types ファイルによって拡張されます (以下の名前の 1 つ以上で使用可能な場合)。

  • /etc/mime.types
  • /etc/apache2/mime.types
  • /etc/apache/mime.types

Windows では、MIME の種類はレジストリから抽出されます。

既定では、--compare-hash フラグを使用して既定の動作をオーバーライドしない限り、同期は最終変更時刻に基づいて機能します。 そのため、Azure File <-> Azure ファイルの場合は、ヘッダー フィールド Last-Modified が x-ms-file-change-time の代わりに使用されるため、ソースでのメタデータの変更によってもコンテンツの種類がトリガーされる可能性があります。

azcopy sync [flags]

1 つのファイルを同期する

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

上記と同じですが、ファイル コンテンツの MD5 ハッシュも計算し、その MD5 ハッシュを BLOB の Content-MD5 プロパティとして保存します。

azcopy sync "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]" --put-md5

サブディレクトリを含むディレクトリ全体を同期します (再帰は既定でオンであることに注意してください)。

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" または azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --put-md5

ディレクトリ内のファイルだけを同期し、サブディレクトリやサブディレクトリ内のファイルは同期しません。

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=false

ディレクトリ内のファイルのサブセットを削除します (例: jpg ファイルおよび pdf ファイルのみ、またはファイル名が "exactName" の場合)。

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --include-pattern="*.jpg;*.pdf;exactName"

ディレクトリ全体を同期しますが、スコープから特定のファイルを除外します (例: foo で始まるすべてのファイルや bar で終わるすべてのファイル)。

azcopy sync "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --exclude-pattern="foo*;*bar"

1 つの BLOB を同期する:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/blob]"

1 つの仮想ディレクトリを同期する:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]" --recursive=true

BLOB と同じ名前の仮想ディレクトリを同期します (あいまいさを排除するため、パスの末尾にスラッシュを追加します)。

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/virtual/dir]/" --recursive=true

Azure ファイル ディレクトリを同期する (BLOB と同じ構文):

azcopy sync "https://[account].file.core.windows.net/[share]/[path/to/dir]?[SAS]" "https://[account].file.core.windows.net/[share]/[path/to/dir]" --recursive=true

注: include と exclude を一緒に使用すると、include パターンに一致するファイルのみが使用されますが、exclude パターンに一致するファイルは無視されます。

オプション

--block-size-mb (フロート) Azure Storage へのアップロード時または Azure Storage からのダウンロード時に、このブロック サイズ (MiB で指定) を使用します。 既定値は、ファイル サイズに基づいて自動的に計算されます。 小数を使用できます (例:0.25)。 アップロードまたはダウンロードの場合、許可される最大ブロック サイズは 0.75 * AZCOPY_BUFFER_GB です。 詳細については、「メモリ使用を最適化する」を参照してください。

--check-md5 (文字列) ダウンロード時に MD5 ハッシュをどの程度厳密に検証するかを指定します。 このオプションはダウンロード時にのみ使用できます。 指定できる値は、次のとおりです。NoCheck、LogOnly、FailIfDifferent、FailIfDifferentOrMissing です。 (既定値は "FailIfDifferent")。 (既定値は "FailIfDifferent")

--cpk-by-name (文字列) クライアントが名前で提供するキーにより、Azure Blob Storage に対して要求を行うクライアントは、要求ごとに暗号化キーを提供するオプションを使用できます。 指定されたキー名は Azure Key Vault からフェッチされ、データの暗号化に使用されます

--cpk-by-valueクライアントが名前で提供するキーにより、Azure Blob Storage に対して要求を行うクライアントは、要求ごとに暗号化キーを提供するオプションを使用できます。 指定されたキーとそのハッシュは環境変数からフェッチされます

--delete-destination (文字列) 同期元に存在しない余分なファイルを同期先から削除するかどうかを定義します。 true、false、または prompt に設定できます。 prompt に設定すると、ファイルと BLOB の削除をスケジュールする前に、ユーザーに質問が表示されます。 (既定値は 'false')。 (既定値は "false")

--dry-run sync コマンドによってコピーまたは削除されるはずのファイルのパスを出力します。 このフラグは、実際のファイルをコピーまたは削除しません。

--exclude-attributes (文字列) (Windows のみ) 属性が属性の一覧と一致するファイルを除外します。 次に例を示します。A;S;R

--exclude-path (文字列) 同期元と同期先を比較するときに、これらのパスを除外します。 このオプションは、ワイルドカード文字 (*) をサポートしていません。 相対パスのプレフィックスを確認します (例: myFolder;myFolder/subDirName/file.pdf)。

--exclude-pattern (文字列) 名前がパターンの一覧と一致するファイルを除外します。 例: .jpg; .pdf;exactName

--exclude-regex (文字列) 正規表現と一致するファイルの相対パスを除外します。 複数の正規表現は ';' で区切ります。

--force-if-read-only Windows または Azure Files 上の既存のファイルを上書きする場合、既存のファイルに読み取り専用属性が設定されている場合でも、上書きを強制的に実行します。

--from-to (文字列) 必要に応じて、コピー元とコピー先の組み合わせを指定します。 例: LocalBlob、BlobLocal、LocalFile、FileLocal、BlobFile、FileBlob など。

-h--help sync のヘルプ

--include-attributes (文字列) (ウィンドウズのみ) 属性が属性の一覧と一致するファイルのみを含めます。 次に例を示します。A;S;R

--include-pattern (文字列) 名前がパターンの一覧と一致するファイルをのみを含めます。 例: .jpg; .pdf;exactName

--include-regex (文字列) 正規表現と一致するファイルの相対パスを含めます。 複数の正規表現は ';' で区切ります。

--log-level (文字列) ログ ファイルのログの詳細度を定義します。使用できるレベルは次のとおりです。INFO(すべての要求と応答)、WARNING(遅い応答)、ERROR(失敗した要求のみ)、および NONE(出力ログなし)。 (既定値は INFO)。 (既定値は "INFO")

--mirror-mode このフラグが true に設定されている場合は、最終変更時刻に基づく比較が無効になり、転送先で競合するファイルと BLOB が上書きされます。 既定値は false です。

--put-blob-size-mb このサイズ (MiB で指定) をしきい値として使用して、Azure Storage にアップロードするときに BLOB を 1 つの PUT 要求としてアップロードするかどうかを判断します。 既定値は、ファイル サイズに基づいて自動的に計算されます。 小数を使用できます (例:0.25)。

--preserve-permissions 既定では false です。 対応リソース (Windows と Azure Files、または ADLS Gen 2 から ADLS Gen 2) 間の ACL を保持します。 階層型名前空間アカウントの場合は、所有権の変更権限とアクセス許可の変更権限を持つコンテナー SAS トークンまたは OAuth トークンが必要です。 ダウンロードする場合は、--backup フラグを使用して、新しい所有者が AzCopy を実行しているユーザーにならないアクセス許可を復元する必要もあります。 ファイルのみのフィルターが指定されている場合を除き、このフラグはファイルとフォルダーの両方に適用されます (例: include-pattern)。

--preserve-smb-info SMB 対応の場所の場合は、フラグは既定で true に設定されます。 SMB 対応リソース (Azure Files) 間の SMB プロパティ情報 (最終書き込み時刻、作成時刻、属性ビット) を保持します。 ファイルのみのフィルターが指定されている場合を除き、このフラグはファイルとフォルダーの両方に適用されます (例: include-pattern)。 フォルダーの場合に保持されない最終書き込み時刻を除き、フォルダーについて転送される情報はファイルの情報と同じです。 (既定値は true)

--put-md5各ファイルの MD5 ハッシュを作成し、ハッシュを同期先の BLOB またはファイルの Content-MD5 プロパティとして保存します。 (既定では、ハッシュは作成されません)。アップロード時にのみ使用できます。

--recursive 既定では true で、ディレクトリ間で同期するときにサブディレクトリを再帰的に調べます。 (既定値は true)。 (既定値は true)

--s2s-preserve-access-tierサービス間のコピー中にアクセス層を保持します。 「Azure Blob Storage: ホット、クール、アーカイブ アクセス層」を参照して、同期先のストレージ アカウントで、アクセス層の設定がサポートされていることを確認してください。 アクセス層の設定がサポートされていない場合は、s2sPreserveAccessTier=false を使用してアクセス層のコピーをバイパスしてください。 (既定値は true)。 (既定値は true)

--s2s-preserve-blob-tagsBLOB ストレージ間でのサービス間同期中にインデックス タグを保持します

親コマンドから継承されるオプション

--cap-mbps (float) 転送速度をメガビット/秒で制限します。 瞬間的なスループットは、上限と若干異なる場合があります。 このオプションを 0 に設定した場合や省略した場合は、スループットは制限されません。

--output-type (string) コマンドの出力の形式。 選択肢には、text、json などがあります。 既定値は "text" です。 (既定値は "text")

--trusted-microsoft-suffixes (文字列) Microsoft Entra ログイン トークンを送信できる別のドメイン サフィックスを指定します。 既定値は ".core.windows.net;.core.chinacloudapi.cn;.core.cloudapi.de;.core.usgovcloudapi.net;*.storage.azure.net" です。 ここに記載されているすべてが既定値に追加されます。 セキュリティのために、Microsoft Azure のドメインのみをここに入力してください。 複数のエンティティは、セミコロンで区切ります。

関連項目