Amazon S3 Gelöschte Datei wiederherstellen

16

Kann ich eine von meinem S3-Bucket gelöschte Datei wiederherstellen?

vonhogen
quelle

Antworten:

19

Gemäß Die Amazon S3-Dokumentation:

Nach dem Löschen gibt es keine Methode zum Wiederherstellen oder Wiederherstellen eines Objekts.

Dave Webb
quelle
Leider unterstützt S3 keine Snapshots.
churnd
Um einigen Leuten Hoffnung zu geben, können Sie heutzutage Dateien wiederherstellen, wenn in Ihrem Bucket die Versionsverwaltung aktiviert ist.
jweyrich
wie verdammt ....?
scytale
34

Wenn Sie die Versionierung aktiviert haben, können Sie das! Auf einem versionierten Bucket löscht eine Löschaktion für eine Datei diese nicht wirklich, sondern fügt eine Version mit einem "Delete Marker" hinzu. Sie können die Löschmarkierung mit der AWS-CLI löschen:

aws s3api delete-object --bucket yourbucket-name --key "yourfile" --version-id id_of_the_delete_marker

Sie können alle Dateien in den Eimer mit bekommen

aws --output text s3api list-object-versions --bucket yourbucket-name > files.txt

Wenn Sie alle Dateien im Bucket wiederherstellen möchten, können Sie Folgendes versuchen:

echo '#!/bin/bash' > undeleteScript.sh && aws --output text s3api list-object-versions --bucket yourbucket-name | grep -E "^DELETEMARKERS" | awk '{FS = "[\t]+"; print "aws s3api delete-object --bucket yourbucket-name --key \42"$3"\42 --version-id "$5";"}' >> undeleteScript.sh && . undeleteScript.sh; rm -f undeleteScript.sh;
Chris Cinelli
quelle
Ich schätze diese Antwort! Hat einwandfrei funktioniert.
nojak
das hat meinen Abend gerettet. Danke dir!
Von Landfried
Kumpel! Ihr Skript zum Wiederherstellen aller Dateien hat mir das Leben gerettet. Danke dir.
herostwist
Für das obige Skript müssen Sie ein --output=text wenn du willst, dass es funktioniert. Er geht davon aus, dass Sie Ihren AWS-Befehl über eine TXT-Datei und nicht über eine JSON-Datei ausgeben.
Brad Allison
Ich habe das Skript ausprobiert, aber es stellt das Objekt nicht wieder her, sondern löscht es dauerhaft! Kann es sein, weil ich nicht der Besitzer des Eimers bin?
nicola
3

Ich aktualisiere gerade diese Frage, als ich nach der Antwort suchte:

Sie können jetzt VERSIONING zu S3-Buckets hinzufügen. Dadurch behält S3 die Versionen eines Objekts auch nach dem Löschen bei. Vollständige Dokumentation: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html

dineth
quelle
Ist es möglich, eine gelöschte Datei über AWS Console abzurufen? Ich kann keinen Weg finden, das zu tun.
Rafael Oliveira