Dieses Repository enthält Python-Skripte, die bei der Verwaltung von S3-Buckets und der Wiederherstellung von Objekten aus Glacier helfen.
Du kannst ein Docker-Image verwenden, um die Skripte in einer isolierten Umgebung auszuführen. Das Docker-Image wird automatisch erstellt und auf Docker Hub veröffentlicht.
Docker-Image ausführen:
Docker-Image ziehen:
docker pull kurmann/s3-restore-utilities:latest
Docker-Container im interaktiven Modus starten:
docker run -it kurmann/s3-restore-utilities:latest
Docker Compose ermöglicht es, Multi-Container-Docker-Anwendungen einfach zu definieren und auszuführen. Hier ist die aktualisierte docker-compose.yml
, die das Docker-Image direkt aus Docker Hub verwendet.
Erstelle eine docker-compose.yml
im Root-Verzeichnis:
services:
s3-restore-utilities:
image: kurmann/s3-restore-utilities:latest
container_name: s3-restore-utilities
volumes:
- /volume1/docker/s3-restore-utilities/downloads:/usr/src/app/downloads
- /volume1/docker/s3-restore-utilities/logs:/usr/src/app/logs
env_file:
- .env
entrypoint: ["python3", "/usr/src/app/supervisor.py"]
tty: true
stdin_open: true
volumes:
downloads:
logs:
Erstelle eine .env
-Datei im Root-Verzeichnis:
Kopiere die bereitgestellte .env.example
und fülle deine AWS-Zugangsdaten aus:
AWS_ACCESS_KEY_ID=dein_access_key_id
AWS_SECRET_ACCESS_KEY=dein_secret_access_key
AWS_DEFAULT_REGION=eu-west-1
Docker und Docker Compose installieren:
Dateien auf die Synology NAS hochladen:
docker-compose.yml
und .env
-Dateien über die File Station oder per SSH auf deine Synology NAS.Terminal (SSH) öffnen:
docker-compose.yml
befindet.Docker Compose ausführen:
docker-compose up
Docker Compose im Hintergrund ausführen:
docker-compose up -d
Verwende den folgenden Befehl, um die Logs der Container in Echtzeit zu überwachen:
docker-compose logs -f
tty
in Docker Composetty: true
: Aktiviert einen pseudo-TTY im Container, wodurch der Container eine Terminal-Schnittstelle erhält.Volumes sind ein wichtiger Mechanismus in Docker, um Daten dauerhaft zu speichern und zwischen Containern zu teilen.
In der Docker Compose-Datei sind zwei Volumes definiert:
volumes:
downloads:
logs:
Diese Volumes werden im Dienst s3-restore-utilities
verwendet, um die Verzeichnisse /usr/src/app/downloads
und /usr/src/app/logs
im Container mit den entsprechenden Verzeichnissen auf dem Host zu verknüpfen:
services:
s3-restore-utilities:
volumes:
- /volume1/docker/s3-restore-utilities/downloads:/usr/src/app/downloads
- /volume1/docker/s3-restore-utilities/logs:/usr/src/app/logs
Diese Konfiguration stellt sicher, dass Dateien, die in den Verzeichnissen downloads
und logs
gespeichert werden, auch nach dem Neustart oder der Neu-Erstellung des Containers erhalten bleiben.
Die Skripte werden über das supervisor.py
-Skript aufgerufen, das sich im Root des Docker-Arbeitsverzeichnisses befindet. Verwende den --help
-Parameter, um Informationen zu den erforderlichen Parametern für jedes Skript zu erhalten.
Dieses Skript initiiert die Wiederherstellung aller Objekte in einem bestimmten Verzeichnis und dessen Unterverzeichnissen aus Glacier.
Eingabeparameter:
bucket-name
: Der Name des S3-Buckets.prefix
: Der Pfad zum Verzeichnis, das du wiederherstellen möchtest.glacier-tier
: Die gewünschte Wiederherstellungs-Tier (Bulk
, Standard
, Expedited
).Beispielaufruf:
docker-compose run s3-restore-utilities restore_deep_glacier dein-bucket-name pfad/zum/verzeichnis --glacier_tier Bulk
Dieses Skript listet alle S3-Buckets in deinem AWS-Konto auf.
Beispielaufruf:
docker-compose run s3-restore-utilities list_buckets
Dieses Skript überprüft den Wiederherstellungsstatus aller Objekte in einem bestimmten Verzeichnis und dessen Unterverzeichnissen. Es gibt die Anzahl der Dateien aus, die wiederhergestellt werden können und jene, die es nicht können, und listet die Dateien gruppiert auf. Ein Fortschrittsbalken zeigt den Überprüfungsfortschritt an.
Eingabeparameter:
bucket-name
: Der Name des S3-Buckets.prefix
: Der Pfad zum Verzeichnis, dessen Wiederherstellungsstatus du überprüfen möchtest.Beispielaufruf:
docker-compose run s3-restore-utilities check_restore_status dein-bucket-name pfad/zum/verzeichnis
Dieses Skript lädt ein gesamtes Verzeichnis aus einem S3-Bucket herunter.
Eingabeparameter:
bucket-name
: Der Name des S3-Buckets.s3-directory
: Der Pfad zum Verzeichnis, das du herunterladen möchtest.local-directory
: Der lokale Pfad, in den die Dateien heruntergeladen werden sollen.Beispielaufruf:
docker-compose run s3-restore-utilities download_s3_directory dein-bucket-name pfad/zum/verzeichnis lokaler-pfad
Du kannst die Logs der Skripte in Echtzeit überwachen, indem du die Docker-Logs verwendest. Dies ist besonders nützlich, um den Fortschritt und mögliche Fehler zu sehen.
Logs in Echtzeit überwachen:
docker-compose logs -f
Dieses Projekt steht unter der MIT-Lizenz. Weitere Informationen findest du in der LICENSE
-Datei.