¿Cómo hago una copia de seguridad de un depósito de AWS S3 sin versionar el depósito de origen [cerrado]

43

¿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?

anon
fuente
Aquí hay una guía de estrategia de respaldo S3 que escribí: eladnava.com/backing-up-your-amazon-s3-buckets-to-ec2
Elad Nava

Respuestas:

23

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 (en lugar de 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 información sobre la autenticación de múltiples factores Eliminar
más sobre la eliminación de objetos

snarkyboojum
fuente
2
La pregunta es lograr esto sin versionar.
Anuruddha
13

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
Ian Purton
fuente
3
¿Hay una manera más rápida de hacer esto? Si hay n claves en el bucket, hay al menos n solicitudes de copia más algunas para listar (y probablemente verificar los resultados). Esto puede llevar bastante tiempo para cubos grandes.
Kariem
1
¿Podría detallar la operación de copia de seguridad cuando mybucket está dañado y uno necesita restaurar mybucket_backup?
Augustin Riedinger
7

Esta no es una solución barata, pero si sus depósitos son realmente críticos, así es como lo hace: inicie una 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, uso la instancia de "gran tamaño", 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. Utilizo el software Jungle Disk de $ 20 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 puedo ver cómo lograría su objetivo también.

Brent Ozar
fuente
Supongo que podría usar una micro instancia y agregar tanto EBS (Elastic Block Storage) como sea necesario. Puede ser una opción más barata.
Shawn Vader
En realidad, no debería, porque el ancho de banda dedicado hacia y desde S3 depende del tamaño de la instancia EC2. Si desea un gran rendimiento, necesita una instancia grande (= $$$$). Mi antiguo empleador descubrió esto de la manera difícil.
John Cowan
6

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ás eliminar accidentalmente todas tus claves de depósito antes de poder eliminar el depósito.

PUNTA
fuente
+1 ya que sería bastante difícil eliminar "accidentalmente" todo en un depósito y luego eliminarlo también.
10
si está utilizando una herramienta como s3cmd, no es más difícil que eliminar un árbol de directorios completo conrm -rf
jberryman
¿Qué hay de Amazon Glacier? ¿Es una opción?
Tony
6

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

Shawnswaner
fuente
1
La replicación de cubos es una gran opción. Para obtener una capa adicional de protección, utilice la replicación de cuenta cruzada para garantizar que cualquier incumplimiento de la cuenta de origen no provoque la pérdida de datos.
Gareth Oakley
6

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 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.

Andrew Lusk
fuente
Me gusta esta idea que otros, esta es una solución más razonable y más barata.
BMW