Versioning

Last change on 2025-01-27 • Created on 2024-10-18 • ID: ST-FDA20

Um Objekte vor versehentlichem Löschen zu schützen, kann Versioning genutzt werden. Genauere Informationen darüber, inwiefern sich Versioning und Object Lock unterscheiden, finden Sie in dem FAQ-Eintrag "Was ist der Unterschied zwischen Versioning und Object Locking?".

Nachdem Sie Versioning aktiviert haben, können Sie Lifecycle-Policies anwenden, mit denen alte Versionen nach einem festgelegten Zeitraum automatisch gelöscht werden. Dies verhindert, dass der Speicher (und somit die Kosten) unbemerkt erheblich ansteigt.

Die Befehle unterscheiden sich je nach S3-kompatiblem Tool. Die folgenden Schritte werden mittels Beispielbefehlen für MinIO Client und AWS CLI erklärt.

  1. Versioning aktivieren

    • MinIO Client

      Für den ganzen Bucket:

      mc version enable <alias_name>/<bucket_name>

    • AWS CLI

      Für den ganzen Bucket:

      aws s3api put-bucket-versioning --versioning-configuration Status=Enabled --bucket <bucket_name>

  1. Versioning-Status prüfen

    • MinIO Client

      Bucket-Status:

      mc version info <alias_name>/<bucket_name>

    • AWS CLI

      Bucket-Status:

      aws s3api get-bucket-versioning --bucket <bucket_name>

  1. Alle Versionen listen

    • MinIO Client

      Von allen Objekten im Bucket:

      mc ls --versions <alias_name>/<bucket_name>

      Von einem bestimmten Objekt:

      mc ls --versions <alias_name>/<bucket_name>/<object_name>
      mc stat --versions <alias_name>/<bucket_name>/<object_name>

    • AWS CLI

      Von allen Objekten im Bucket:

      aws s3api list-object-versions --bucket <bucket_name>

      Von einem bestimmten Objekt:

      aws s3api list-object-versions --bucket <bucket_name> --key <object_name>

  1. Eine bestimmte Version von einem Objekt öffnen oder herunterladen

    Wenn keine Versions ID angegeben wird, wird automatisch die Version angezeigt, die zuletzt hinzugefügt wurde (die aktuellste Version).

    • MinIO Client

      mc cat --version-id <version_id> <alias_name>/<bucket_name>/<object_name>
      mc cp --version-id <version_id> <alias_name>/<bucket_name>/<object_name> <local_target_location>

    • AWS CLI

      aws s3api get-object --version-id <version_id> --bucket <bucket_name> --key <object_name> <local_target_location>

  1. Eine oder alle Versionen eines Objektes löschen

    • MinIO Client

      Alle Versionen:

      OBJECT="<alias_name>/<bucket_name>/<object_name>"
      for key in $(mc ls --versions "$OBJECT" | awk '{print $6}'); do
        mc rm --version-id "$key" "$OBJECT"; done

      Eine bestimmte Version:

      mc rm --version-id <version_id> <alias_name>/<bucket_name>/<object_name>

    • AWS CLI

      Alle Versionen:

      BUCKET="<bucket_name>"
      OBJECT="<object_name>"
      for version in $(aws s3api list-object-versions --bucket "$BUCKET" --prefix $OBJECT --query 'Versions[].VersionId' --output text); do
        aws s3api delete-object --version-id "$version" --bucket "$BUCKET" --key $OBJECT; done

      Eine bestimmte Version:

      aws s3api delete-object --version-id <version_id> --bucket <bucket_name> --key <object_name>

  1. Versioning deaktivieren

    • MinIO Client

      Für den ganzen Bucket:

      mc version suspend <alias_name>/<bucket_name>
    • AWS CLI

      Für den ganzen Bucket:

      aws s3api put-bucket-versioning --versioning-configuration Status=Suspended --bucket <bucket_name>

Nächste Schritte: