TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸

Lokale Synchronisation eines Amazon S3 Buckets mit der AWS CLI

February 23, 2017

Diese Anleitung beschreibt, wie Sie den Befehl aws s3 sync verwenden, um den Inhalt eines Amazon S3 Buckets mit einem lokalen Verzeichnis zu synchronisieren. Dies ist eine effiziente Methode, um Backups zu erstellen oder einen lokalen Spiegel eines S3 Buckets zu pflegen.


1. AWS CLI installieren und konfigurieren

Installation

Die empfohlene Methode ist die Installation der AWS CLI v2.

  • macOS (Homebrew):
    code
    brew install awscli
    
  • Linux/Andere: Folgen Sie der offiziellen Installationsanleitung, um die neueste Version zu erhalten. Die über apt installierte Version ist oft veraltet.

Konfiguration

Konfigurieren Sie die AWS CLI mit Ihren Anmeldeinformationen (Access Key ID und Secret Access Key).

code
aws configure

Dieser Befehl speichert Ihre Anmeldeinformationen in ~/.aws/credentials und die Standardregion in ~/.aws/config. Für die Verwendung mehrerer AWS-Konten können Sie Profile anlegen:

code
aws configure --profile work

2. Grundlegende Synchronisationsbefehle

Der aws s3 sync-Befehl vergleicht den Inhalt des Quell- und Zielverzeichnisses und kopiert nur neue oder geänderte Dateien.

S3 Bucket nach lokal synchronisieren

code
# Synchronisiert den Inhalt von 'my-bucket' in das aktuelle lokale Verzeichnis
aws s3 sync s3://my-bucket .

Lokales Verzeichnis nach S3 synchronisieren

code
# Synchronisiert den Inhalt des aktuellen lokalen Verzeichnisses in 'my-bucket'
aws s3 sync . s3://my-bucket

3. Fortgeschrittene Sync-Optionen

--delete

Mit diesem Flag werden Dateien im Zielverzeichnis gelöscht, die im Quellverzeichnis nicht (mehr) existieren. Verwenden Sie diese Option mit Vorsicht.

code
# Erstellt einen exakten Spiegel des Buckets und löscht lokale Dateien, die in S3 nicht vorhanden sind
aws s3 sync s3://my-bucket . --delete

--exclude und --include

Diese Flags ermöglichen eine feingranulare Steuerung darüber, welche Dateien synchronisiert werden sollen. Die Reihenfolge ist wichtig: zuerst wird alles ausgeschlossen (--exclude "*"), dann werden spezifische Muster wieder eingeschlossen.

code
# Synchronisiert nur den Ordner 'photos/' und dessen Inhalt
aws s3 sync s3://my-bucket . --exclude "*" --include "photos/*"

Öffentliche Buckets synchronisieren

Für den Zugriff auf öffentliche Buckets, die keine Authentifizierung erfordern, verwenden Sie das --no-sign-request-Flag.

code
aws s3 sync s3://public-bucket . --no-sign-request

sync vs. cp --recursive

  • aws s3 sync: Ist inkrementell. Es werden nur neue oder geänderte Dateien basierend auf Größe und Änderungsdatum kopiert. Dies ist die effizienteste Methode für regelmäßige Backups.
  • aws s3 cp --recursive: Kopiert immer alle Dateien aus dem Quellverzeichnis, unabhängig davon, ob sie im Ziel bereits existieren. Dies kann zu höheren Transferkosten und längeren Laufzeiten führen.

Wichtige Hinweise

  • Kosten: Beachten Sie, dass bei der Datenübertragung von und zu S3 Transferkosten anfallen können.
  • Profile: Wenn Sie mit mehreren AWS-Profilen arbeiten, fügen Sie das --profile-Flag zu Ihren Befehlen hinzu (z.B. aws s3 sync ... --profile work).