Поделиться через


Синхронизация с хранилищем BLOB-объектов Azure с помощью AzCopy

Локальное хранилище можно синхронизировать с хранилищем BLOB-объектов Azure с помощью программы командной строки AzCopy версии 10.

Содержимое локальной файловой системы можно синхронизировать с контейнером BLOB. Вы также можете синхронизировать контейнеры и виртуальные каталоги друг с другом. Синхронизация имеет односторонний характер. Другими словами, вы выбираете, какая из этих двух конечных точек будет источником, а какая — назначением. В синхронизации также используются API сервер-сервер. Примеры, представленные в этом разделе, также работают с учетными записями, имеющими иерархическое пространство имен.

Замечание

Текущий выпуск AzCopy не поддерживает синхронизацию с другими источниками и пунктами назначения (например, хранилища файлов или контейнеры Amazon Web Services (AWS) S3).

Чтобы просмотреть примеры других типов задач, таких как отправка файлов, скачивание больших двоичных объектов или копирование БОЛЬШИХ двоичных объектов между учетными записями, см. ссылки, представленные в разделе "Дальнейшие действия " этой статьи.

Начало работы

Ознакомьтесь со статьей Начало работы с AzCopy, чтобы получить сведения о том, как скачать AzCopy, а также о способах предоставления учетных данных авторизации в службе хранилища.

Замечание

В примерах этой статьи предполагается, что вы предоставили учетные данные авторизации с помощью идентификатора Microsoft Entra.

Если вы предпочитаете использовать для авторизации доступа к данным большого двоичного объекта маркер SAS, маркер можно добавить к URL-адресу ресурса в каждой команде AzCopy. Например: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

Руководящие принципы

По умолчанию команда синхронизации сравнивает имена файлов и метки времени последнего изменения. Это поведение можно переопределить для использования хэшей MD5 вместо последних измененных меток времени с помощью флага --compare-hash . Установите для дополнительного флага --delete-destination значение true или prompt, чтобы удалить файлы в целевом каталоге, если эти файлы больше не существуют в исходном каталоге.

  • Если установить для флага --delete-destination значение true, AzCopy удаляет файлы без подтверждения. Если требуется подтверждение перед тем, как AzCopy удалит файл, установите для флага --delete-destination значение prompt.

  • Если вы планируете задать для флага --delete-destination значение prompt или false, попробуйте использовать команду copy вместо команды sync и присвойте параметру --overwrite значение ifSourceNewer. Команда copy потребляет меньше памяти и связана с меньшими затратами, поскольку операция копирования не должна индексировать источник или назначение перед перемещением файлов.

  • Если вы не планируете использовать --compare-hash флаг, компьютер, на котором выполняется команда синхронизации, должен иметь точные системные часы, так как время последнего изменения критически важно для определения необходимости передачи файла. Если системные часы рассинхронизированы, не следует изменять файлы в месте назначения слишком близко к тому времени, когда планируется выполнять команду sync.

  • AzCopy использует API-интерфейсы "сервер — сервер" для синхронизации данных между учетными записями хранения. Это означает, что данные копируются непосредственно между серверами хранения. Однако AzCopy настраивает и отслеживает каждую передачу, а для больших учетных записей хранения (например, учетных записей, содержащих миллионы больших двоичных объектов), AzCopy может потребовать значительного объема вычислительных ресурсов для выполнения этих задач. Поэтому при запуске AzCopy из виртуальной машины убедитесь, что виртуальная машина имеет достаточно ядер или памяти для обработки нагрузки.

  • Чтобы предотвратить случайное удаление, обязательно включите функцию обратимого удаления перед использованием флага --delete-destination=prompt|true .

Обновление контейнера с изменениями в локальной файловой системе

В этом случае контейнер является назначением, а локальная файловая система — источником.

Подсказка

В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Синтаксис

azcopy sync '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive

Пример

azcopy sync 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive

Обновление локальной файловой системы с изменениями в контейнере

В этом случае локальная файловая система является назначением, а контейнер является источником.

Подсказка

В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Синтаксис

azcopy sync 'https://<storage-account-name>.blob.core.windows.net/<container-name>' 'C:\myDirectory' --recursive

Пример

azcopy sync 'https://mystorageaccount.blob.core.windows.net/mycontainer' 'C:\myDirectory' --recursive

Обновление контейнера с изменениями в другом контейнере

Первый контейнер, отображаемый в этой команде, является источником. Второй является назначением.

Если вы предоставляете учетные данные авторизации с помощью идентификатора Microsoft Entra, убедитесь, что вы настроили соответствующие роли в исходной и целевой учетной записи. См . вариант 1. Использование идентификатора Microsoft Entra.

Подсказка

В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Синтаксис

azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>' --recursive

Пример

azcopy sync 'https://mysourceaccount.blob.core.windows.net/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

Обновление каталога с изменениями в каталоге в другом контейнере

Первый каталог, который отображается в этой команде, является источником. Второй является назначением.

Если вы предоставляете учетные данные авторизации с помощью идентификатора Microsoft Entra, убедитесь, что вы настроили соответствующие роли в исходной и целевой учетной записи. См . вариант 1. Использование идентификатора Microsoft Entra.

Подсказка

В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Синтаксис

azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive

Пример

azcopy sync 'https://mysourceaccount.blob.core.windows.net/<container-name>/myDirectory?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myDirectory' --recursive

Обновление контейнера с изменениями в другом контейнере с помощью маркера SAS

Первый контейнер, отображаемый в этой команде, является источником. Второй является назначением.

Если вы предоставляете маркер SAS, убедитесь, что вы используете маркер SAS, соответствующий исходной и целевой учетной записи хранения, при использовании azcopy sync.

Синтаксис

azcopy sync 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<destination-SAS-token>' --recursive

Пример

azcopy sync 'https://mysourceaccount.blob.core.windows.net/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/?sv=2018-03-28&ss=qrdu&dst=mco&kp=rwdlapuc&se=2019-07-04T05:30:08Z&st=2019-07-03T21:31:10Z&spr=https&sig=CAfhgnc9gdGktvB=yzx9CAjMKeeN678yiyFwdNU092JC8%6D' --recursive

Подсказка

Если вы копируете данные большого объема, вы можете использовать Azure Storage Explorer.

Проверьте сведения о размере, скопированные вами. В верхней строке меню выберите "Дополнительно ->Статистика папок", чтобы получить сведения о каталоге, включая размер в байтах.

Синхронизация с необязательными флагами

Вы можете настроить операцию синхронизации с помощью дополнительных флагов. Вот несколько примеров.

Сценарий Флаг
Укажите, как строго следует проверять хэши MD5 при скачивании. --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing]
Исключите файлы на основе шаблона. --exclude-path
Укажите, насколько подробными должны быть записи журнала, связанные с синхронизацией. --log-level=[WARNING (ПРЕДУПРЕЖДЕНИЕ)|ERROR (ОШИБКА)|INFO (ИНФОРМАЦИЯ)|NONE (НЕТ)]
Укажите, как скопировать VHD-файл. --blob-type=BlockBlob --include-pattern "*.vhd" или --blob-type=BlockBlob

Полный список флагов см. в разделе параметров.

Замечание

Флаг --recursive по умолчанию установлен в значение true. --exclude-pattern и --include-pattern флаги применяются только к именам файлов, а не к другим частям пути к файлу.

Дальнейшие шаги

Дополнительные примеры см. в следующих статьях:

Ознакомьтесь со статьями ниже, чтобы получить сведения о настройке параметров, оптимизации производительности и устранении проблем: