Entiendo cómo funciona rsync en un nivel alto, pero hay 2 lados. Con S3 no hay ningún demonio para hablar, bueno, lo hay, pero básicamente es solo HTTP.
Parece que hay algunos enfoques.
s3rsync (pero esto solo se atornilla en rsync a s3). Sencillo. No estoy seguro de querer depender de algo de terceros. Deseo que s3 solo sea compatible con rsync.
También hay algunos 'clones' de rsync como duplicidad que dicen admitir s3 sin dicho bolt-on. ¿Pero cómo puede hacer esto? ¿Están manteniendo un archivo de índice localmente? No estoy seguro de cómo puede ser tan eficiente.
Obviamente quiero usar s3 porque es barato y confiable, pero hay cosas para las que rsync es la herramienta, como hacer una copia de seguridad de un directorio gigante de imágenes.
¿Cuáles son las opciones aquí? ¿Qué pierdo al usar duplicity + s3 en lugar de rsync + s3rsync + s3?
Respuestas:
Dado que esta última pregunta fue respondida, existe una nueva herramienta de línea de comandos de AWS,
aws
.Se puede sincronizar , como rsync, entre el almacenamiento local y s3. Ejemplo de uso:
Si el entorno de Python de su sistema está configurado correctamente, puede instalar el cliente AWS usando
pip
:fuente
rsync
, y me tomó un promedio de 1 segundo, con solo los cambios que se produjeron en mi conexión lenta.aws s3 sync
por otro lado, tardó unos 5 minutos, retransmitiendo todos y cada uno de los archivos.La herramienta s3cmd tiene una gran
sync
opción. Lo uso para sincronizar copias de seguridad locales, usando algo como:Esto
--skip-existing
significa que no intenta comparar la suma de comprobación de los archivos existentes. Si ya hay un archivo con ese nombre, lo omitirá rápidamente y continuará. También hay una--delete-removed
opción que eliminará los archivos que no existen localmente, pero quiero seguir en S3 incluso los que he limpiado localmente, así que no lo uso.fuente
No quiero decirle a nadie qué hacer, pero ¿puedo agitar una bandera por duplicidad? u otra solución de respaldo incremental. La sincronización está muy bien, pero si haces una copia de seguridad todas las noches, ¿qué sucede si no notas el problema durante dos días? Respuesta: Es demasiado tarde, sus archivos locales y su copia de seguridad son un espejo el uno del otro y tampoco tienen los datos que necesita. Realmente debería considerar copias de seguridad incrementales o instantáneas para poder recuperarse en un momento particular en el tiempo y para hacer esto de manera eficiente necesita copias de seguridad incrementales. Y si perder sus datos es un escenario del fin del mundo, guarde copias en diferentes proveedores como nunca se sabe, entonces podría perderse, piratear quién sabe.
Uso duplicidad y s3, está bien pero es intensivo en CPU. Pero hace copias de seguridad incrementales. En caso de emergencia, cuando desee restaurar un directorio o un archivo en particular, como fue el miércoles pasado o el pasado enero, sin restaurar los otros archivos en la misma partición, necesita copias de seguridad incrementales y una herramienta donde puede solicitar solo los archivos que necesita.
Tengo un cron, que se llena cada x meses, de lo contrario incremental y elimina más de x meses para mantener bajos los totales de almacenamiento s3, finalmente hace el estado de la colección, así que me envían por correo cada mañana con el estado. Debe vigilarlo regularmente para que note cuando su copia de seguridad no funciona.
Se requiere un espacio temporal local significativo para mantener las firmas locales, así que configure el directorio temporal con cuidado. Esta copia de seguridad / mnt, excluyendo varios directorios dentro de / mnt. Esto es bueno para hacer una copia de seguridad de los datos, ya que las particiones del sistema utilizan imágenes de Amazon o herramientas de instantáneas.
Script PHP:
fuente
S3 es un sistema de almacenamiento de objetos de propósito general que proporciona suficiente flexibilidad para que pueda diseñar cómo desea usarlo.
No estoy seguro de su pregunta sobre los problemas con rsync (aparte de la indexación) o los problemas con la herramienta 'de terceros' con la que se ha encontrado.
Si tiene un gran conjunto de archivos bien estructurado, puede ejecutar múltiples sincronizaciones s3 en sus subcarpetas.
La buena gente de Amazon también le permite importar / exportar desde su disco duro portátil para transferir archivos grandes a S3 o EBS: http://aws.amazon.com/importexport/ que puede usar para la primera carga.
Consulte las mejores prácticas de Amazon s3 aquí: http://aws.amazon.com/articles/1904
En cuanto a las diferentes herramientas, pruébelas y vea qué funciona mejor para usted. En cuanto a los precios, hay precios de redundancia reducidos si se ajustan a sus necesidades: http://aws.amazon.com/s3/pricing/
Recomendación general: tenga una CPU multinúcleo rápida y una buena conexión de red.
ACTUALIZACIÓN: Mención sobre suma de verificación en S3
En cuanto a S3, almacena datos en pares de valores clave y no existe un concepto de directorios. S3sync verifica la suma de verificación (S3 tiene un mecanismo para enviar la suma de verificación como un encabezado para verificación - Encabezado Content-MD5). Las mejores prácticas enlazan la parte de Integridad de datos que contiene en detalle. S3 le permite enviar / verificar y recuperar sumas de verificación. Hay muchas personas que realizan copias de seguridad incrementales con duplicidad. A pesar de que no hay rsync ejecutándose en S3, puede hacer sumas de verificación como mencioné aquí.
rsync es una herramienta probada y la mayoría de las herramientas modernas usan el mismo algoritmo o biblioteca rsync o llaman a rsync externamente.
fuente
Alternativamente, puede usar minio client aka mc. El uso del comando 'mc mirror' hará el trabajo.
Puede escribir un script simple como cronjob que mantendrá una sincronización a intervalos periódicos.
Espero eso ayude.
fuente
-w
bandera ahora, que se usaráfsnotify
para observar los cambios. Se puede configurar fácilmente como un servicio del sistema o similar.No estoy seguro de si rsync verdadero es una buena opción para Amazon.
Según tengo entendido, el algoritmo rsync estándar significa que el cliente calcula los hashes para cada bloque de un archivo y el servidor calcula los hashes para su copia y envía esos hashes al cliente, lo que significa que el cliente puede determinar qué bloques han cambiado y necesitan cargarse.
Eso causa dos problemas para Amazon, ya que se deben enviar muchos hashes a través de Internet y también se necesita potencia de procesamiento para calcular todos los hashes que aumentarían los costos de Amazon, lo que probablemente sea la razón por la que se lo dejan a terceros proveedores que pueden cobrar extra por esa característica.
En cuanto a los clones, obviamente están almacenando los hashes en algún lugar y el lugar puede variar según el clon. Les sería posible almacenar los hashes como un objeto separado por archivo en Amazon o como una base de datos almacenada en Amazon o podrían almacenarlos local y remotamente.
Hay ventajas y desventajas de hacerlo de cualquier manera. Si los hashes se almacenan de forma remota en archivos individuales, puede ser costoso recuperarlos continuamente. Si los hash se almacenan en una base de datos de forma remota, entonces esta base de datos puede ser grande y puede ser costoso recuperarlos y actualizarlos continuamente. Si los hashes se almacenan localmente, esto ayuda a reducir los costos, pero introduce otras complicaciones y problemas.
(Por supuesto, Amazon tiene otros servicios, por lo que sería posible mantener una base de datos en Amazon DB)
Como ejemplo, probé un primer clon rsync hace muchos años. Esto no fue escrito para tener en cuenta la estructura de precios de Amazon y emitía muchos http para recuperar el hash de cada bloque y, dado que Amazon cobra por cada compra, significa que mientras la parte de almacenamiento de mi factura cayó bruscamente, la parte de transferencia globo
Pierde el hecho de que con rsync sabe que está comparando archivos fuente con sus archivos de respaldo. Con duplicidad y otros clones, está comparando sus archivos de origen con un hash que se tomó cuando se realizó la copia de seguridad. Por ejemplo, puede ser posible acceder a S3 directamente y reemplazar uno de sus archivos sin volver a calcular el hash o actualizar la base de datos hash.
fuente
Después de comparar las múltiples opciones mencionadas en este hilo, decidí ir a S3fs. Le permite montar S3 como un sistema de archivos local. Luego puede continuar y usar rsync de la forma en que ya lo sabe.
Este es un buen tutorial para comenzar: Amazon S3 con Rsync
El autor utilizó anteriormente el s3sync mencionado, pero luego cambió a la opción con S3Fs. Me gusta porque también tengo otras carpetas de respaldo montadas localmente a través de SSHFS.
fuente