azcopy sync

Repliziert den Quellspeicherort an den Zielspeicherort. Dieser Artikel enthält eine detaillierte Referenz zum Befehl „azcopy sync“. Weitere Informationen zum Synchronisieren von Blobs zwischen Quell- und Zielspeicherorten finden Sie unter Synchronisieren mit Azure Blob Storage mit AzCopy v10. Für Azure Files finden Sie weitere Informationen unter Synchronisieren von Dateien.

Zusammenfassung

Die Zeitpunkte der letzten Änderung werden für den Vergleich verwendet. Die Datei wird übersprungen, wenn der Zeitpunkt der letzten Änderung im Ziel aktueller ist. Alternativ dazu können Sie das Flag --compare-hash verwenden, um nur Dateien zu übertragen, die sich in ihrem MD5-Hash unterscheiden. Folgende Paare werden unterstützt:

  • Lokal <-> Azure-Blob / Azure File (SAS- oder OAuth-Authentifizierung kann verwendet werden)
  • Azure Blob <-> Azure Blob (entweder SAS- oder OAuth-Authentifizierung kann verwendet werden)
  • Azure-Datei <-> Azure-Datei (Die Quelle muss eine SAS enthalten oder öffentlich zugänglich sein, für das Ziel sollte die SAS-Authentifizierung verwendet werden.)
  • Azure BLOB < – > Azure-Datei

Der Befehl „sync“ unterscheidet sich auf mehrere Arten vom Befehl „copy“:

  1. Das „recursive“-Flag ist standardmäßig „true“, und „sync“ kopiert alle Unterverzeichnisse. Mit „Sync“ werden nur die Dateien der obersten Ebene in einem Verzeichnis kopiert, wenn das „recursive“-Flag „false“ ist.
  2. Fügen Sie beim Synchronisieren zwischen virtuellen Verzeichnissen dem Pfad einen nachstehenden Schrägstrich hinzu (siehe Beispiele), wenn ein Blob über denselben Namen wie eines der virtuellen Verzeichnisse verfügt.
  3. Wenn das Flag „delete-destination“ auf „true“ oder „prompt“ festgelegt ist, werden Dateien und Blobs, die in der Quelle nicht vorhanden sind, von „sync“ am Ziel gelöscht.

Richtlinien

Standardmäßig vergleicht der Befehl sync Dateinamen und Zeitstempel der letzten Änderung. Sie können dieses Verhalten außer Kraft setzen, um MD5-Hashes anstelle von Zeitstempeln der letzten Änderung zu verwenden, indem Sie das Flag --compare-hash verwenden. Legen Sie das optionale Flag --delete-destination auf den Wert true oder prompt fest, um Dateien im Zielverzeichnis zu löschen, wenn diese im Quellverzeichnis nicht mehr vorhanden sind.

  • Wenn Sie das Flag --delete-destination auf true festlegen, löscht AzCopy Dateien, ohne zur Bestätigung aufzufordern. Wenn eine Bestätigungsaufforderung angezeigt werden soll, bevor AzCopy eine Datei löscht, legen Sie das --delete-destination-Flag auf prompt fest.

  • Wenn Sie das Flag --delete-destination auf prompt oder false festlegen möchten, sollten Sie den Befehl copy anstelle des Befehls sync verwenden und den Parameter --overwrite auf ifSourceNewer festlegen. Der Befehl copy verbraucht weniger Arbeitsspeicher und verursacht weniger Abrechnungskosten, weil die Quelle oder das Ziel bei einem Kopiervorgang vor dem Verschieben von Dateien nicht indiziert werden muss.

  • Wenn Sie nicht planen, das Flag --compare-hash zu verwenden, sollte der Computer, auf dem Sie den Synchronisierungsbefehl ausführen, über eine genaue Systemuhr verfügen, da die Uhrzeiten der letzten Änderung bei der Entscheidung über die Übertragung einer Datei maßgeblich sind. Wenn die Zeit Ihres Systems erheblich abweicht, sollten Sie Dateien am Ziel nicht zu nahe an dem Zeitpunkt ändern, zu dem Sie einen Synchronisierungsbefehl ausführen möchten.

  • AzCopy verwendet Server-zu-Server-APIs, um Daten zwischen Speicherkonten zu synchronisieren. Das bedeutet, dass Daten zwischen Speicherservern direkt kopiert werden. Allerdings wird jede Übertragung von AzCopy eingerichtet und überwacht, und bei umfangreicheren Speicherkonten (z. B. Konten, die Millionen von Blobs umfassen) benötigt AzCopy u. U. eine erhebliche Menge an Computeressourcen, um diese Aufgaben zu bewältigen. Wenn Sie AzCopy auf einem virtuellen Computer ausführen, stellen Sie daher sicher, dass dem virtuellen Computer genügend Kerne/Arbeitsspeicher zur Verfügung stehen, um die Last zu verarbeiten.

  • Für Blob Storage können Sie versehentliche Löschungen verhindern, indem Sie sicherstellen, dass das Feature zum vorläufigen Löschen aktiviert ist, bevor Sie das --delete-destination=prompt|true-Flag verwenden.

Erweitert

Zu beachten: Wenn Sie keine Dateierweiterung angeben, erkennt AzCopy den Inhaltstyp der Dateien beim Hochladen vom lokalen Datenträger automatisch anhand der Dateierweiterung oder des Inhalts.

Die integrierte Nachschlagetabelle ist klein, aber unter Unix wird sie, falls verfügbar, um die mime.types-Datei(en) des lokalen Systems erweitert. Hierfür werden diese Namen verwendet:

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

Unter Windows werden MIME-Typen aus der Registrierung extrahiert.

Standardmäßig funktioniert die Synchronisierung ab dem Zeitpunkt der letzten Änderung, es sei denn, Sie setzen dieses Standardverhalten mithilfe des Flags --compare-hash außer Kraft. Im Fall von Azure File <-> Azure File wird das Kopfzeilenfeld „Zuletzt geändert“ anstelle von x-ms-file-change-time verwendet, was bedeutet, dass Metadatenänderungen an der Quelle auch eine vollständige Kopie auslösen können.

azcopy sync [flags]

Beispiele

Synchronisieren einer einzelnen Datei:

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

Wie oben, aber berechnen Sie außerdem einen MD5-Hash des Dateiinhalts, und speichern Sie diesen MD5-Hash als „Content-MD5“-Eigenschaft des Blobs.

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

Synchronisieren eines gesamten Verzeichnisses einschließlich der zugehörigen Unterverzeichnisse (beachten Sie, dass „recursive“ standardmäßig aktiviert ist):

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

Synchronisieren Sie nur die Dateien innerhalb eines Verzeichnisses, nicht aber Unterverzeichnisse oder die Dateien innerhalb von Unterverzeichnissen:

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

Synchronisieren Sie eine Teilmenge von Dateien in einem Verzeichnis (z.B. nur JPG- und PDF-Dateien oder wenn der Dateiname „exactName“ lautet):

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

Synchronisieren Sie ein gesamtes Verzeichnis, doch schließen Sie bestimmte Dateien aus dem Umfang aus (z. B. jede Datei, die mit „foo“ beginnt oder mit „bar“ endet):

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

Synchronisieren eines einzelnen Blobs:

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

Synchronisieren eines virtuellen Verzeichnisses:

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

Synchronisieren eines virtuellen Verzeichnisses mit demselben Namen wie ein Blob (Fügen Sie dem Pfad einen nachstehenden Schrägstrich hinzu, um die Namen zu unterscheiden.):

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

Synchronisieren eines Azure-Dateiverzeichnisses (dieselbe Syntax wie bei einem 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

Hinweis: Wenn „include“- und „exclude“-Flags zusammen verwendet werden, werden nur Dateien verwendet, die mit den „include“-Mustern übereinstimmen. Dateien, die mit den „exclude“-Mustern übereinstimmen, werden ignoriert.

Optionen

--block-size-mb (Gleitkommazahl): Blockgröße (in MiB) für das Hochladen in Azure Storage oder das Herunterladen aus Azure Storage. Der Standardwert wird anhand der Dateigröße automatisch berechnet. Dezimalzahlen sind zulässig (Beispiel: 0,25). Beim Hochladen oder Herunterladen beträgt die maximal zulässige Blockgröße 0,75 * AZCOPY_BUFFER_GB. Weitere Informationen finden Sie unter Optimieren der Speichernutzung.

--check-md5 (Zeichenfolge) Gibt an, wie streng MD5-Hashes beim Herunterladen überprüft werden sollten. Diese Option ist nur beim Herunterladen verfügbar. Verfügbare Werte enthalten: „NoCheck“, „LogOnly“, „FailIfDifferent“, „FailIfDifferentOrMissing“. (Standardwert: „FailIfDifferent“) (Die Standardeinstellung ist „FailIfDifferent“.)

--cpk-by-name (Zeichenfolge) vom Client bereitgestellter Schlüssel nach Name; bietet Clients, die Anforderungen an Azure Blob Storage stellen, eine Option zum Bereitstellen eines Verschlüsselungsschlüssels pro Anforderung. Der bereitgestellte Schlüsselname wird aus Azure Key Vault abgerufen und zum Verschlüsseln der Daten verwendet.

--cpk-by-value vom Client bereitgestellter Schlüssel nach Name; bietet Clients, die Anforderungen an Azure Blob Storage stellen, eine Option zum Bereitstellen eines Verschlüsselungsschlüssels pro Anforderung. Der bereitgestellte Schlüssel und sein Hash werden aus Umgebungsvariablen abgerufen.

--delete-destination (Zeichenfolge): definiert, ob zusätzliche Dateien am Ziel gelöscht werden sollen, die in der Quelle nicht vorhanden sind. Könnte auf „true“, „false“ oder „prompt“ festgelegt werden. Wenn sie auf „prompt“ festgelegt wurde, wird dem Benutzer eine Frage gestellt, bevor Dateien und Blobs zum Löschen geplant werden. (Standardwert: „false“) (Der Standardwert lautet „false“.)

--dry-run: gibt den Pfad der Dateien aus, die vom Synchronisierungsbefehl kopiert oder entfernt werden. Mit diesem Flag werden nicht die tatsächlichen Dateien kopiert oder entfernt.

--exclude-attributes (Zeichenfolge) (Nur Windows) Schließt Dateien aus, deren Attribute mit der Attributliste übereinstimmen. Beispiel: A;S;R

--exclude-path (Zeichenfolge) Schließt diese Pfade beim Vergleich der Quelle mit dem Ziel aus. Diese Option unterstützt keine Platzhalterzeichen (*). Überprüft das Präfix des relativen Pfads (Beispiel: myFolder;myFolder/subDirName/file.pdf).

--exclude-pattern (Zeichenfolge): Schließt Dateien aus, in denen der Name der Musterliste entspricht. Beispiel: .jpg; .pdf;exactName

--exclude-regex (Zeichenfolge): schließt den relativen Pfad der Dateien aus, die regulären Ausdrücken entsprechen. Reguläre Ausdrücke werden durch Semikolon (;) getrennt.

--force-if-read-only erzwingt das Überschreiben einer vorhandenen Datei unter Windows oder in Azure Files auch dann, wenn für die vorhandene Datei das Nur-Lese-Attribut festgelegt ist.

--from-to (Zeichenfolge): Gibt optional die Quelle/Ziel-Kombination an. Beispiel: LocalBlob, BlobLocal, LocalFile, FileLocal, BlobFile, FileBlob usw.

-h, --help Hilfe zu „sync“

--include-attributes (Zeichenfolge) (Nur Windows) Schließt nur Dateien ein, deren Attribute mit der Attributliste übereinstimmen. Beispiel: A;S;R

--include-pattern (Zeichenfolge): Schließt nur Dateien ein, deren Name der Musterliste entspricht. Beispiel: .jpg; .pdf;exactName

--include-regex (Zeichenfolge) Schließt den relativen Pfad der Dateien ein, die regulären Ausdrücken entsprechen. Reguläre Ausdrücke werden durch Semikolon (;) getrennt.

--log-level (Zeichenfolge) Definiert, wie ausführlich die Protokolldatei sein soll. Verfügbare Stufen: INFO (alle Anforderungen und Antworten), WARNING (langsame Antworten), ERROR (nur fehlgeschlagene Anforderungen) und NONE (keine Ausgabeprotokolle). (Der Standardwert lautet „INFO“.) (Standardwert: „Info“)

--mirror-mode Deaktiviert den auf dem Zeitpunkt der letzten Änderung basierenden Vergleich und überschreibt die in Konflikt stehenden Dateien und Blobs am Ziel, wenn dieses Flag auf „true“ festgelegt ist. Die Standardeinstellung ist „false“.

--put-blob-size-mb Verwenden Sie diese Größe (in MiB angegeben) als Schwellenwert, um zu bestimmen, ob ein BLOB beim Hochladen in Azure Storage als einzelne PUT-Anforderung hochgeladen werden soll. Der Standardwert wird anhand der Dateigröße automatisch berechnet. Dezimalzahlen sind zulässig (Beispiel: 0,25).

--preserve-permissions Der Standardwert ist FALSE. Behält ACLs zwischen bewussten Ressourcen (Windows und Azure Files oder ADLS Gen 2 zu ADLS Gen 2) bei. Für Konten mit einem hierarchischen Namespace benötigen Sie eine Container-SAS oder ein OAuth-Token mit den Berechtigungen „Besitz ändern“ und „Berechtigungen ändern“. Für Downloads müssen Sie auch das Flag --backup verwenden, um Berechtigungen wiederherzustellen, bei denen der neue Besitzer nicht der Benutzer ist, der AzCopy ausführt. Dieses Flag gilt sowohl für Dateien als auch für Ordner, es sei denn, ein reiner Dateifilter ist angegeben (z. B. „include-pattern“).

--preserve-smb-info Für SMB-fähige Speicherorte wird das Flag standardmäßig auf „true“ festgelegt. Behält SMB-Eigenschaftsinformationen ( letzte Schreibzeit, Erstellungszeit, Attributbits) zwischen SMB-fähigen Ressourcen (Azure Files) bei. Dieses Flag gilt sowohl für Dateien als auch für Ordner, es sei denn, ein reiner Dateifilter ist angegeben (z. B. „include-pattern“). Die für Ordner übertragenen Informationen sind die gleichen wie die für Dateien, mit Ausnahme der letzten Schreibzeit, die für Ordner nicht gespeichert wird. (Standardwert: „true“)

--put-md5 Dient zum Erstellen eines MD5-Hashs jeder Datei und zum Speichern des Hashs als „Content-MD5“-Eigenschaft des Zielblobs bzw. der Zieldatei. (Standardmäßig wird der Hash NICHT erstellt.) Nur beim Hochladen verfügbar.

--recursive Standardmäßig; überprüfen Sie Unterverzeichnisse rekursiv, wenn Sie zwischen Verzeichnissen synchronisieren. (Die Standardeinstellung ist „true“). (Standardwert: „true“)

--s2s-preserve-access-tier Dient zum Beibehalten der Zugriffsebene beim Kopieren von Dienst zu Dienst. Informationen zur Sicherstellung, dass das Zielspeicherkonto das Festlegen der Zugriffsebene unterstützt, finden Sie unter Azure Blob Storage: Zugriffsebenen „Heiß“, „Kalt“ und „Archiv“. Verwenden Sie s2sPreserveAccessTier=false in den Fällen, in denen das Festlegen der Zugriffsebene nicht unterstützt wird, um das Kopieren der Zugriffsebene zu umgehen. (Die Standardeinstellung ist „true“). (Standardwert: „true“)

--s2s-preserve-blob-tags Behält Indextags während der Synchronisierung zwischen Diensten von einem Blobspeicher zu einem anderen bei.

Von übergeordneten Befehlen geerbte Optionen

--cap-mbps (Gleitkomma) Begrenzt die Übertragungsrate (in Megabit pro Sekunde). Der Schritt-für-Schritt-Durchsatz kann von der Obergrenze geringfügig abweichen. Wenn diese Option auf „Null“ festgelegt oder weggelassen wird, ist der Durchsatz nicht begrenzt.

--output-type (Zeichenfolge) – Format der Befehlsausgabe. Folgende Optionen sind verfügbar: „text“ und „json“. Der Standardwert lautet „text“. (Standardwert: „text“)

--trusted-microsoft-suffixes (Zeichenfolge) Gibt weitere Domänensuffixe an, bei denen möglicherweise Microsoft Entra-Anmeldetoken gesendet werden. Der Standardwert ist '.core.windows.net;.core.chinacloudapi.cn;.core.cloudapi.de;.core.usgovcloudapi.net;*.storage.azure.net'. Alle hier aufgelisteten Werte werden zum Standardwert hinzugefügt. Aus Sicherheitsgründen sollten Sie hier nur Microsoft Azure-Domänen platzieren. Trennen Sie mehrere E-Mail-Adressen durch Semikolons voneinander.

Weitere Informationen