Freigeben über


Synchronisieren mit Azure Blob Storage mithilfe von AzCopy

Sie können lokalen Speicher mit Azure Blob Storage synchronisieren, indem Sie das Befehlszeilenprogramm AzCopy v10 verwenden.

Sie können den Inhalt eines lokalen Dateisystems mit einem BLOB-Container synchronisieren. Sie können container und virtuelle Verzeichnisse auch miteinander synchronisieren. Die Synchronisierung erfolgt unidirektional. Anders gesagt: Sie wählen aus, welcher der beiden Endpunkte die Quelle und welcher das Ziel ist. Bei der Synchronisierung werden auch Server-zu-Server-APIs verwendet. Die in diesem Abschnitt vorgestellten Beispiele funktionieren auch mit Konten mit einem hierarchischen Namespace.

Hinweis

Die aktuelle Version von AzCopy synchronisiert nicht zwischen anderen Quellen und Zielen (z. B. Dateispeicher oder Amazon Web Services (AWS) S3 Buckets).

Beispiele für andere Aufgabentypen wie das Hochladen von Dateien, das Herunterladen von Blobs oder das Kopieren von Blobs zwischen Konten finden Sie in den Links im Abschnitt "Nächste Schritte " dieses Artikels.

Loslegen

Lesen Sie den Artikel Erste Schritte mit AzCopy, um AzCopy herunterzuladen und zu erfahren, wie Sie dem Speicherdienst Autorisierungsanmeldeinformationen bereitstellen können.

Hinweis

In den Beispielen in diesem Artikel wird davon ausgegangen, dass Sie Anmeldeinformationen für die Autorisierung mithilfe von Microsoft Entra ID bereitgestellt haben.

Wenn Sie lieber ein SAS-Token für die Autorisierung des Zugriffs auf Blobdaten verwenden möchten, können Sie dieses Token in jedem AzCopy-Befehl an die Ressourcen-URL anfügen. Beispiel: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

Leitlinien

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 einer VM ausführen, stellen Sie daher sicher, dass der VM genügend Kerne/Arbeitsspeicher zur Verfügung stehen, um die Last zu bewältigen.

  • Um versehentliche Löschungen zu verhindern, stellen Sie sicher, dass Sie die Funktion zum vorläufigen Löschen aktivieren, bevor Sie das --delete-destination=prompt|true Kennzeichen verwenden.

Aktualisieren eines Containers mit Änderungen an einem lokalen Dateisystem

In diesem Fall ist der Container das Ziel und das lokale Dateisystem die Quelle.

Tipp

In diesem Beispiel werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen.

Syntax

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

Beispiel

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

Aktualisieren eines lokalen Dateisystems mit Änderungen an einem Container

In diesem Fall ist das lokale Dateisystem das Ziel, und der Container ist die Quelle.

Tipp

In diesem Beispiel werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen.

Syntax

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

Beispiel

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

Aktualisieren eines Containers mit Änderungen in einem anderen Container

Der erste Container, der in diesem Befehl angezeigt wird, ist die Quelle. Das zweite ist das Ziel.

Wenn Sie Autorisierungsanmeldeinformationen mithilfe der Microsoft Entra-ID angeben, stellen Sie sicher, dass Sie die richtigen Rollen in Ihrem Quell- und Zielkonto eingerichtet haben. Siehe Option 1: Verwenden der Microsoft Entra-ID.

Tipp

In diesem Beispiel werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen.

Syntax

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

Beispiel

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

Aktualisieren eines Verzeichnisses mit Änderungen an einem Verzeichnis in einem anderen Container

Das erste Verzeichnis in diesem Befehl ist die Quelle. Das zweite ist das Ziel.

Wenn Sie Autorisierungsanmeldeinformationen mithilfe der Microsoft Entra-ID angeben, stellen Sie sicher, dass Sie die richtigen Rollen in Ihrem Quell- und Zielkonto eingerichtet haben. Siehe Option 1: Verwenden der Microsoft Entra-ID.

Tipp

In diesem Beispiel werden Pfadargumente in einfache Anführungszeichen ('') eingeschlossen. Verwenden Sie in allen Befehlsshells außer der Windows-Befehlszeile (cmd.exe) einfache Anführungszeichen. Wenn Sie eine Windows-Befehlszeile (cmd.exe) verwenden, müssen Sie Pfadargumente in doppelte Anführungszeichen ("") anstelle von einfachen Anführungszeichen ('') einschließen.

Syntax

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

Beispiel

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

Aktualisieren eines Containers mit Änderungen in einem anderen Container mithilfe eines SAS-Tokens

Der erste Container, der in diesem Befehl angezeigt wird, ist die Quelle. Das zweite ist das Ziel.

Wenn Sie ein SAS-Token bereitstellen, stellen Sie sicher, dass Sie ein SAS-Token verwenden, das dem Quell- und Zielspeicherkonto entspricht, während Sie azcopy-Synchronisierung verwenden.

Syntax

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

Beispiel

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

Tipp

Wenn Sie eine größere Datengröße kopieren, können Sie den :Azure Storage-Explorer verwenden.

Überprüfen Sie die Größendetails, die Sie kopiert haben. Wählen Sie im Menü der oberen Leiste "Weitere>Ordnerstatistiken" aus, damit Sie die Details des Verzeichnisses einschließlich der Größe in Bytes abrufen können.

Synchronisieren mit optionalen Flags

Sie können den Synchronisierungsvorgang mit optionalen Flags optimieren. Hier sind einige Beispiele angegeben.

Szenario Flagge
Geben Sie an, wie streng MD5-Hashes beim Herunterladen überprüft werden sollen. --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing]
Ausschließen von Dateien basierend auf einem Muster --exclude-path
Angeben, wie detailliert die synchronisierungsbezogenen Protokolleinträge sein sollen --log-level=[WARNING|FEHLER|INFORMATIONEN|NONE]
Geben Sie an, wie eine vhd-Datei kopiert werden soll. --blob-type=BlockBlob --include-pattern "*.vhd" oder --blob-type=BlockBlob

Eine vollständige Liste der Flags finden Sie unter "Optionen".

Hinweis

Die --recursive Kennzeichnung wird standardmäßig auf true festgelegt. Die --exclude-pattern Kennzeichen --include-pattern gelten nur für Dateinamen und nicht für andere Teile des Dateipfads.

Nächste Schritte

Weitere Beispiele finden Sie in diesen Artikeln:

Lesen Sie diese Artikel, um Einstellungen zu konfigurieren, die Leistung zu optimieren und Probleme zu beheben: