Синхронизация с хранилищем BLOB-объектов Azure с помощью AzCopy
Вы можете синхронизировать локальное хранилище с хранилищем BLOB-объектов Azure с помощью служебной программы командной строки AzCopy версии 10.
Вы можете синхронизировать содержимое локальной файловой системы с контейнером BLOB-объектов. Вы также можете синхронизировать контейнеры и виртуальные каталоги друг с другом. Синхронизация имеет односторонний характер. Другими словами, вы выбираете, какая из этих двух конечных точек будет источником, а какая — назначением. В синхронизации также используются API сервер-сервер. Примеры, приведенные в этом разделе, также подходят для учетных записей с иерархическим пространством имен.
Примечание.
Текущая версия AzCopy не выполняет синхронизацию между другими источниками и назначениями (например, хранилище файлов или контейнеры Amazon Web Services (AWS) S3).
Чтобы увидеть примеры задач других типов, таких как загрузка файлов, скачивание BLOB-объектов или копирование BLOB-объектов между учетными записями, см. ссылки, представленные в разделе Дальнейшие действия этой статьи.
Начало работы
Ознакомьтесь со статьей Начало работы с 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
Синхронизация с дополнительными флагами
Вы можете настроить операцию синхронизации с помощью дополнительных флагов. Вот несколько примеров.
Сценарий | Флаг |
---|---|
Указание, насколько строго должны проверяться хэши MD5 при скачивании. | --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing] |
Исключите файлы на основе шаблона. | --exclude-path |
Укажите, насколько подробными должны быть записи журнала, связанные с синхронизацией. | --log-level=[WARNING|ERROR|INFO|NONE] |
Полный список флагов см. в разделе Параметры.
Примечание.
По умолчанию флаг --recursive
имеет значение true
. Флаги --exclude-pattern
и --include-pattern
применяются только к именам файлов, а не к другим частям пути к файлу.
Следующие шаги
Дополнительные примеры см. в следующих статьях:
- Примеры: отправка
- Примеры: скачивание
- Примеры: копирование между учетными записями
- Примеры: контейнеры Amazon S3
- Примеры: облачное хранилище Google
- Примеры. Файлы Azure
- Руководство. Перенос локальных данных в облачное хранилище с помощью AzCopy
Ознакомьтесь со статьями ниже, чтобы получить сведения о настройке параметров, оптимизации производительности и устранении проблем: