Copia de seguridad de datos almacenados en Amazon S3

16

Tengo una instancia EC2 que ejecuta un servidor web que almacena los archivos cargados de los usuarios en S3. Los archivos se escriben una vez y nunca cambian, pero los usuarios los recuperan ocasionalmente. Es probable que acumulemos entre 200 y 500 GB de datos por año. Nos gustaría asegurarnos de que estos datos estén seguros, particularmente de eliminaciones accidentales y nos gustaría poder restaurar archivos que fueron eliminados independientemente de la razón.

He leído sobre la función de control de versiones para los cubos S3, pero parece que no puedo encontrar si es posible la recuperación de archivos sin historial de modificaciones. Consulte los documentos de AWS aquí sobre versiones:

http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html

En esos ejemplos, no muestran el escenario donde se cargan los datos, pero nunca se modifican y luego se eliminan. ¿Se pueden recuperar los archivos eliminados en este escenario?

Luego, pensamos que podríamos hacer una copia de seguridad de los archivos S3 en Glacier usando la gestión del ciclo de vida de los objetos:

http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html

Pero, parece que esto no funcionará para nosotros, ya que el objeto de archivo no se copia en Glacier sino que se mueve a Glacier (más exactamente parece que es un atributo de objeto que se cambia, pero de todos modos ...).

Por lo tanto, parece que no hay una forma directa de hacer una copia de seguridad de los datos de S3, y transferir los datos de S3 a servidores locales puede llevar mucho tiempo y generar costos de transferencia significativos con el tiempo.

Finalmente, pensamos que crearíamos un nuevo depósito cada mes para servir como una copia de seguridad completa mensual, y copiaríamos los datos del depósito original al nuevo el Día 1. Luego, usaríamos algo como duplicidad ( http://duplicity.nongnu.org/ ) sincronizaríamos el depósito de respaldo todas las noches. Al final del mes, pondríamos el contenido del depósito de respaldo en el almacenamiento de Glacier, y crearíamos un nuevo depósito de respaldo usando una copia nueva y actual del depósito original ... y repetiríamos este proceso. Parece que funcionaría y minimizaría los costos de almacenamiento / transferencia, pero no estoy seguro de si la duplicidad permite transferencias de cubo a cubo directamente sin llevar primero los datos al cliente controlador.

Entonces, supongo que hay un par de preguntas aquí. Primero, ¿las versiones de S3 permiten la recuperación de archivos que nunca fueron modificados? ¿Hay alguna forma de "copiar" archivos de S3 a Glacier que me haya perdido? ¿La duplicidad o cualquier otra herramienta pueden transferir archivos entre cubos S3 directamente para evitar costos de transferencia? Finalmente, ¿estoy fuera de lugar en mi enfoque para hacer una copia de seguridad de los datos de S3?

Gracias de antemano por cualquier idea que pueda proporcionar!

Actualizar

Amazon anunció recientemente que el control de versiones ahora funciona con reglas de ciclo de vida

Billete de cinco libras
fuente
aws.amazon.com/blogs/aws/archive-s3-to-glacier/… + hay un pequeño video corto de youtube en la parte inferior que explica s3 al glaciar
equivalente8

Respuestas:

10

He leído sobre la función de control de versiones para los cubos S3, pero parece que no puedo encontrar si la> recuperación es posible para archivos sin historial de modificaciones. Consulte los documentos de AWS aquí en> versiones:

Acabo de probar esto. Sí, puedes restaurar desde la versión original. Cuando elimina el archivo, se crea un marcador de eliminación y puede restaurar la versión anterior, es decir, la única revisión.

Luego, pensamos que podríamos hacer una copia de seguridad de los archivos S3 en Glacier usando el ciclo de vida del objeto> administración:

Pero, parece que esto no funcionará para nosotros, ya que el objeto de archivo no se copia en Glacier, sino que se mueve a Glacier (más exactamente parece que es un atributo de objeto que se cambia, pero> de todos modos ...).

Glacier está realmente destinado al almacenamiento a largo plazo, al que se accede con muy poca frecuencia. También puede ser muy costoso recuperar una gran parte de sus datos de una sola vez, ya que no está destinado a la restauración de muchos datos en un momento dado (porcentaje porcentual).

Finalmente, pensamos que crearíamos un nuevo depósito cada mes para servir como una copia de seguridad completa mensual, y copiaríamos los datos del depósito original al nuevo el día 1. Luego, usaríamos algo> como duplicidad ( http: //duplicity.nongnu. org / ) sincronizaríamos el bucket de respaldo cada noche.

No hagas esto, solo puedes tener 100 depósitos por cuenta, por lo que en 3 años habrás tomado un tercio de tu asignación de depósito con solo copias de seguridad.

Entonces, supongo que hay un par de preguntas aquí. Primero, ¿las versiones de S3 permiten la recuperación de> archivos que nunca fueron modificados?

si

¿Hay alguna forma de "copiar" archivos de S3 a Glacier que me haya perdido?

No que yo sepa

Sirex
fuente
Gracias Sirex, una aclaración: teníamos la intención de mantener un depósito de copia de seguridad a la vez (el mes actual) y archivar la copia de seguridad del último mes en Glacier, y luego eliminar las copias de Glacier en alguna política de retención general (cada mes durante 3 meses) trimestralmente por un año). ¿Cree que esto es posible o existe alguna otra limitación de AWS que impida esta estrategia?
Fiver
hmm, supongo que es razonable. Sin embargo, no lo he intentado con ira (o glaciar para el caso, usamos Sydney y no estaba disponible cuando lo investigamos)
Sirex
3

no me gusta tener s3 montado, porque es lento y puede colgar y funciona como nfs de la vieja escuela. mejor simplemente subir / bajar según sea necesario.

http://s3tools.org/s3cmd

es fácil de script ... no olvides tu archivo ~ / .s3cfg

nandoP
fuente
Wow, esto se ve genial!
JakeGould
@nandoP +1 Pensé en usar el s3cmd y rodar el mío
Fiver
1

Parece que podría necesitar S3FS, que básicamente monta sus cubos S3 como si fueran sistemas de archivos locales:

http://code.google.com/p/s3fs/wiki/FuseOverAmazon

Prefiero usar esta versión bifurcada, ya que conserva la misma estructura de carpetas que la creada en el panel de control web para Amazon S3:

https://github.com/tongwang/s3fs-c

Luego tengo algunos scripts de shell que básicamente se usan rsyncpara sincronizar los datos con mis configuraciones locales.

En general, considero que S3FS funciona mejor para leer contenido colocado dentro de los cubos de Amazon S3. Escribir no es tan consistente. Pero con el propósito de hacer una copia de seguridad de los cubos S3, la horquilla Tony Wang de S3FS funciona muy bien.

JakeGould
fuente
1
Esto suena util. ¿Se transfiere directamente entre cubos, sin descargar al cliente?
Fiver
Posiblemente si. Lo uso principalmente para montar en un servidor local y hacer copias de seguridad en nuestras máquinas locales. Pero dado que tiene capacidad de escritura, no descartaría usarlo como un "intermediario" para mezclar datos entre cubos. Básicamente, en una máquina intermedia, monte un cucharón en un punto de montaje. Luego monte el otro cubo como otro punto de montaje. Y luego solo haz un rsync. Pero como dije, los tiempos / fechas de modificación pueden ser raros con Amazon S3 ya que no es realmente un sistema de archivos. Pero experimenta.
JakeGould