azcopy sync

Реплицирует исходное расположение в целевое. В этой статье содержится подробная справочная информация по команде azcopy sync. Дополнительные сведения о синхронизации BLOB-объектов в исходном и целевом расположениях см. в статье Синхронизация с хранилищем BLOB-объектов Azure с помощью AzCopy версии 10. Сведения о службе "Файлы Azure" см. в разделе Синхронизация файлов.

Краткие сведения

Время последнего изменения используется для сравнения. Файл пропускается, если время последнего изменения в назначении является более новым. Кроме того, можно использовать --compare-hash флаг для передачи только файлов, которые отличаются хэшом MD5. Поддерживаются следующие пары:

  • Локальный объект <-> BLOB-объект Azure или файл Azure (можно использовать проверку подлинности SAS или OAuth)
  • BLOB-объект <Azure —> BLOB-объект Azure (можно использовать проверку подлинности SAS или OAuth)
  • Файл Azure <-> Файл Azure (источник должен включать в себя SAS или быть общедоступным; в качестве назначения следует использовать проверку подлинности SAS).
  • BLOB-объект Azure <-> Файл Azure

Команда sync отличается от команды copy в нескольких отношениях.

  1. По умолчанию рекурсивный флаг имеет значение "true", и команда sync создает копию всех подкаталогов. Синхронизация копирует только файлы верхнего уровня в каталоге, если рекурсивный флаг имеет значение false.
  2. Если вы выполняете синхронизацию между виртуальными каталогами и существует большой двоичный объект с тем же именем, что и один из виртуальных каталогов, добавьте в конец пути косую черту (см. примеры).
  3. Если для флага delete-destination задано значение true или prompt, то при синхронизации в назначении будут удалены файлы и большие двоичные объекты, которые отсутствуют в источнике.

Рекомендации

По умолчанию команда синхронизации сравнивает имена файлов и метки времени последнего изменения. Это поведение можно переопределить для использования хэшей 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 из виртуальной машины убедитесь, что виртуальная машина имеет достаточно ядер или памяти для обработки нагрузки.

Расширенные

Обратите внимание: если расширение файла не указать, при отправке с локального диска AzCopy автоматически определит тип содержимого файлов на основе расширения файла или его содержимого.

Встроенная таблица подстановки небольшая, но в Unix она дополняется файлами mime.types локальной системы, если они доступны по одному или нескольким из следующих имен:

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

В Windows типы MIME извлекаются из реестра.

По умолчанию синхронизация работает вне времени последнего изменения, если вы не переопределяете поведение по умолчанию с помощью флага --compare-hash . Поэтому в сценарии "Файл Azure <-> файл Azure" вместо x-ms-file-change-time используется поле заголовка Last-Modified, что означает, что изменения метаданных в источнике также могут активировать полное копирование.

azcopy sync [flags]

Примеры

Синхронизация одного файла:

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

Этот код выполняет те же действия, что и код выше, но также вычисляет хэш MD5 содержимого файла, а затем сохраняет этот хэш MD5 как свойство 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"

Синхронизация одного большого двоичного объекта:

azcopy sync "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]" "https://[account].blob.core.windows.net/[container]/[path/to/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

Синхронизация виртуального каталога, имя которого совпадает с именем большого двоичного объекта (добавьте в конец пути косую черту, чтобы устранить неоднозначность):

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 (с тем же синтаксисом, что и большой двоичный объект):

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

Обратите внимание: если флаги включения или исключения используются вместе, будут использоваться только файлы, соответствующие шаблонам включения, а те, которые соответствуют шаблонам исключения, игнорируются.

Параметры

Число с плавающей точкой --block-size-mb. Используйте этот размер блока (указанный в МиБ) при отправке в службу хранилища Azure или скачивании из нее. Значение по умолчанию рассчитывается автоматически в зависимости от размера файла. Допускаются десятичные дроби (например, 0,25). При отправке или скачивании максимальный допустимый размер блока составляет 0,75 * AZCOPY_BUFFER_GB. Дополнительные сведения см. в статье "Оптимизация использования памяти".

--check-md5 (строка). Указывает, насколько строго должны проверяться хэши MD5 при скачивании. Этот параметр доступен только при скачивании. Доступные значения: NoCheck, LogOnly, FailIfDifferent, FailIfDifferentOrMissing. Значение по умолчанию — FailIfDifferent. Значение по умолчанию — FailIfDifferent.

Строка --cpk-by-name. Клиент, предоставивший ключ по имени, позволяет клиентам, выполняющим запросы к Хранилищу BLOB-объектов Azure, предоставлять ключ шифрования по запросу. Предоставленное имя ключа будет извлечено из Azure Key Vault и использоваться для шифрования данных

--cpk-by-value. Клиент, предоставивший ключ по имени, позволяет клиентам, выполняющим запросы к Хранилищу BLOB-объектов Azure, предоставлять ключ шифрования по запросу. Предоставленный ключ и его хэш будут извлечены из переменных среды.

Строка --delete-destination. Определяет, нужно ли удалять из назначения дополнительные файлы, которые отсутствуют в источнике. Может быть задано значение true, false или prompt. Если задано значение prompt, перед планированием удаления файлов и больших двоичных объектов пользователю будет задан вопрос. Значение по умолчанию — false. Значение по умолчанию — false.

--dry-run Выводит путь к файлам, которые будут скопированы или удалены командой синхронизации. Этот флаг не копирует и не удаляет фактические файлы.

--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 принудительно выполните перезапись, даже если существующий файл имеет набор атрибутов только для чтения.

--from-to (строка). Дополнительно задает комбинацию назначения источника. Пример: LocalBlob, BlobLocal, LocalFile, FileLocal, BlobFile, FileBlob и т. д.

-h, --help. Справка по синхронизации.

Строка --include-attributes (только для Windows). Включает только те файлы, атрибуты которых соответствуют списку атрибутов. Например, A, S, R.

--include-pattern (строка) — включение только тех файлов, имена которых соответствуют списку шаблонов. Например: .jpg;.pdf;exactName.

Строка --include-regex. Исключает относительный путь файлов, соответствующих регулярным выражениям. Разделяйте регулярные выражения символом ';'.

Строка --log-level. Определяет уровень детализации журнала для файла журнала. Доступные уровни: INFO (все запросы и ответы), WARNING (медленные ответы), ERROR (только невыполненные запросы) и NONE (без выходных журналов). Значение по умолчанию — INFO. Значение по умолчанию — "INFO".

--mirror-mode. Сравнение по времени последнего изменения и перезапись конфликтующих файлов и BLOB-объектов в назначении отключаются, если этому флагу присвоено значение true. Значение по умолчанию — false.

--put-blob-size-mbИспользуйте этот размер (указанный в MiB) в качестве порогового значения, чтобы определить, следует ли отправлять большой двоичный объект в виде одного запроса PUT при отправке в служба хранилища Azure. Значение по умолчанию рассчитывается автоматически в зависимости от размера файла. Допускаются десятичные дроби (например, 0,25).

--preserve-permissions. Значение по умолчанию — false. Сохраняет списки управления доступом при передаче элементов между ресурсами с соответствующей поддержкой (Windows и служба "Файлы Azure" либо ADLS 2-го поколения/ADLS 2-го поколения). Для учетных записей с иерархическим пространством имен потребуется маркер SAS или токен OAuth контейнера с разрешениями на изменение владельца и изменение разрешений. При скачивании также требуется указать флаг --backup для восстановления разрешений в случаях, когда новый владелец не является пользователем, от чьего лица запущена AzCopy. Этот флаг применяется как к файлам, так и к папкам, если не задан фильтр "Только для файлов" (например, include-pattern).

--preserve-smb-info. Для расположений с поддержкой SMB флаг по умолчанию будет иметь значение true. Сохраняет сведения о свойстве SMB (последнее время записи, время создания, биты атрибутов) при передаче элементов между ресурсами, поддерживающими SMB (Файлы Azure). Этот флаг применяется как к файлам, так и к папкам, если не задан фильтр "Только для файлов" (например, include-pattern). Данные, передаваемые для папок, совпадают с файлами, за исключением последнего времени записи, которое не сохраняется для папок. (Значение по умолчанию — true.)

--put-md5 Создайте хэш MD5 каждого файла и сохраните хэш в качестве свойства Content-MD5 целевого большого двоичного объекта или файла. (По умолчанию хэш НЕ создается.) Доступно только при отправке.

--recursive. Значение по умолчанию — true; при синхронизации между каталогами позволяет рекурсивно просматривать подкаталоги. (Значение по умолчанию — true). (Значение по умолчанию — true.)

--s2s-preserve-access-tier. Позволяет сохранить уровень доступа при копировании между службами. Дополнительные сведения см. в статье Хранилище BLOB-объектов Azure: горячий, холодный и архивный уровни доступа, чтобы убедиться, что целевая учетная запись хранения поддерживает настройку уровня доступа. Если настройка уровня доступа не поддерживается, используйте s2sPreserveAccessTier=false, чтобы обойти уровень доступа при копировании. (Значение по умолчанию — true). (Значение по умолчанию — true.)

--s2s-preserve-blob-tags. Сохраняет теги индекса во время синхронизации между службами из одного хранилища BLOB-файлов с другим.

Параметры, наследуемые от родительских команд

--cap-mbps(плавающая точка) Ограничивает скорость передачи данных в Мбит/с. Наблюдаемая пропускная способность может слегка отличаться от предельной. Если установить для этого параметра значение 0 или вообще не указывать значение, пропускная способность не ограничивается.

--output-type (строка) Формат выходных данных команды. Возможные варианты: text, json. Значение по умолчанию — text.

--trusted-microsoft-suffixes (строка) Указывает другие суффиксы домена, в которых могут отправляться маркеры входа Microsoft Entra. Значение по умолчанию: .core.windows.net;.core.chinacloudapi.cn;.core.cloudapi.de;.core.usgovcloudapi.net;*.storage.azure.net. Все перечисленные здесь домены добавлены по умолчанию. Для безопасности здесь следует указывать только домены Microsoft Azure. При указании нескольких значений введите их через точку с запятой.

См. также