Amazon S3 Recuperar archivo eliminado

Respuestas:

20

De acuerdo con la documentación de Amazon S3:

Una vez eliminado, no hay ningún método para restaurar o recuperar un objeto.

Dave Webb
fuente
Es lamentable que S3 no admita instantáneas.
churnd
1
Para dar esperanza a algunas personas, hoy en día puede recuperar archivos si su depósito tiene habilitado el control de versiones.
jweyrich
¿cómo demonios ...?
scytale
43

Si tiene habilitado el control de versiones, ¡sí puede! En un depósito versionado, una acción de eliminación en un archivo realmente no lo elimina, pero agrega una versión con un "Eliminar marcador". Puede eliminar el marcador de eliminación con la AWS CLI:

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

Puede obtener todos los archivos en el cubo con

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

Si desea recuperar todos los archivos en el depósito, puede probar:

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
fuente
Agradezco esta respuesta! Trabajado sin problemas.
tacotuesday
¡tipo! Su guión de recuperación de todos los archivos me salvó la vida. gracias.
herostwist
Para la secuencia de comandos anterior, debe agregar un --output=textsi desea que funcione. Está asumiendo que está emitiendo su comando AWS a través de un archivo .txt y no un archivo .JSON.
Brad Allison el
He probado el script pero no restaura el objeto, ¡lo elimina permanentemente! ¿Puede ser porque no soy el dueño del cubo?
nicola
1
¿Por qué esta no es la respuesta aceptada? @vonhogen por favor reconsidere su elección :)
Janaka Bandara
3

Simplemente actualicé esta pregunta mientras buscaba la respuesta:

Puede agregar VERSIONING a los cubos S3 ahora. Esto hará que S3 mantenga versiones de un objeto incluso después de la eliminación. Documentación completa: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html

cena
fuente
¿Es posible recuperar un archivo eliminado a través de la consola de AWS? No puedo encontrar una manera de hacer eso.
Rafael Oliveira