it-swarm-es.com

¿Cómo hago una copia de seguridad de un bucket de AWS S3 sin versionar el bucket de origen?

¿Hay alguna forma de recuperarse de las eliminaciones accidentales de un Amazon S3 Bucket?

Tenemos información crítica en nuestros depósitos y necesito mitigar el riesgo de eliminaciones accidentales o maliciosas del depósito en sí.

Sé que puedo sincronizar todo el depósito localmente, pero esto no es demasiado práctico si el tamaño de mi depósito es de 100 GB.

¿Alguna idea sobre estrategias de respaldo?

44
Nikhil Gupte

Otro enfoque es habilitar el control de versiones S3 en su bucket. Luego puede restaurar archivos borrados, etc. Consulte la documentación de S3 para saber cómo habilitar esto

El uso de herramientas de terceros como BucketExplorer hace que trabajar con versiones sea bastante trivial (frente a llamar a la API usted mismo directamente).

También puede habilitar la eliminación de autenticación multifactor para sus depósitos S3, lo que hace que la "eliminación accidental" sea un poco más difícil;)

Más sobre la eliminación de autenticación de múltiples factores
Más sobre la eliminación de objetos

23
snarkyboojum

Puede usar s3cmd http://s3tools.org/s3cmd

Entonces, para respaldar un cubo llamado mybucket

s3cmd mb s3://mybucket_backup
s3cmd --recursive cp s3://mybucket s3://mybucket_backup
13
Ian Purton

Esta no es una solución barata, pero si sus depósitos son realmente críticos, así es como lo hace: inicie un instancia de Amazon EC2 y sincronice el contenido allí periódicamente.

Amazon EC2 es su proveedor de alojamiento de virtualización. Puede activar instancias de Linux, Windows, etc. y ejecutar lo que desee. Paga por hora y obtiene un espacio de almacenamiento bastante grande localmente para ese servidor. Por ejemplo, utilizo la instancia de tamaño "grande", que viene con 850 GB de espacio en disco local.

Lo bueno es que está en la misma red que S3, y obtienes transferencias ilimitadas entre S3 y EC2. Uso el software $ 20 Jungle Disk en una instancia de Windows EC2, que me permite acceder a mis cubos S3 como si fueran carpetas de disco locales. Entonces puedo hacer archivos por lotes programados para copiar cosas de S3 y en mi espacio de disco EC2 local. Puede automatizarlo para mantener copias de seguridad por hora si lo desea, o si desea apostar, configure JungleDisk (o sus equivalentes de Linux) para sincronizar una vez cada hora más o menos. Si alguien elimina un archivo, tiene al menos unos minutos para recuperarlo de EC2. Sin embargo, recomendaría las copias de seguridad programadas regulares: es fácil mantener unos días de copias de seguridad si las está comprimiendo en un volumen de 850 GB.

Esto es realmente útil para el envío de registros de SQL Server, pero también puedo ver cómo lograría su objetivo.

7
Brent Ozar

Una posible solución podría ser simplemente crear un "depósito de respaldo" y duplicar su información confidencial allí. En teoría, sus datos son más seguros en S3 que en su disco duro.

Además, no estoy seguro de si las eliminaciones accidentales son un problema real porque necesitará accidentalmente eliminar todas sus claves de depósito antes de poder eliminar el depósito.

7
JAG

Para modificar la respuesta de Brent (excelente) un poco; no debería necesitar mantener la instancia ejecutándose. Cree un AMI EC2 que extraiga sus datos, los sincronice con un volumen de EBS, tome instantáneas de ese volumen y se cierre.

También podría mantener el volumen en ejecución por sí solo, pero la captura de imágenes debería ser suficiente para una copia de seguridad. Si su AMI personalizada hace todo esto (incluido el apagado después de que se haya hecho) sin interacción, entonces su script de 'copia de seguridad' solo necesita 'ec2run -n 1 -t m1.small AMI-' y disparar y olvidar.

6
Andrew Lusk

Otra posible solución es replicar su cubo a la zona de Europa en S3. Esto puede persistir el depósito después de su eliminación accidental el tiempo suficiente para recuperarse.

6
shawnswaner