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 die Inhalte eines lokalen Dateisystems mit einem Blobcontainer synchronisieren. Sie können auch Container und virtuelle Verzeichnisse 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 Beispiele in diesem Abschnitt können auch für Konten verwendet werden, die über einen hierarchischen Namespace verfügen.
Hinweis
Das aktuelle Release von AzCopy synchronisiert nicht zwischen anderen Quellen und Zielen (beispielsweise: Dateispeicher oder Amazon Web Services (AWS) S3-Buckets).
Beispiele für andere Arten von Aufgaben, z. B. das Hochladen von Dateien, das Herunterladen von Blobs oder das Kopieren von Blobs zwischen Konten, finden Sie unter den Links im Abschnitt Nächste Schritte dieses Artikels.
Erste Schritte
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 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>'
.
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
auftrue
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 aufprompt
fest.Wenn Sie das Flag
--delete-destination
aufprompt
oderfalse
festlegen möchten, sollten Sie den Befehl copy anstelle des Befehls sync verwenden und den Parameter--overwrite
aufifSourceNewer
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 ein versehentliches Löschen zu verhindern, aktivieren Sie das Feature Vorläufiges Löschen, bevor Sie das Flag
--delete-destination=prompt|true
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 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 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 von 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 in 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 von 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
Synchronisieren mit optionalen Flags
Sie können den Synchronisierungsvorgang mit optionalen Flags optimieren. Hier sind einige Beispiele angegeben.
Szenario | Flag |
---|---|
Angeben, 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|ERROR|INFO|NONE] |
Eine vollständige Liste der Flags finden Sie unter Optionen.
Hinweis
Standardmäßig ist das Flag --recursive
auf true
festgelegt. Die Flags --exclude-pattern
und --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:
- Beispiele: Hochladen
- Beispiele: Herunterladen
- Beispiele: Kopieren zwischen Konten
- Beispiele: Amazon S3-Buckets
- Beispiele: Google Cloud Storage
- Beispiele: Azure Files
- Tutorial: Migrieren von lokalen Daten zum Cloudspeicher mithilfe von AzCopy
Lesen Sie diese Artikel, um Einstellungen zu konfigurieren, die Leistung zu optimieren und Probleme zu beheben: