Cómo sincronizar archivos de Linux a Amazon S3 – CloudSavvy IT

Amazon S3.

AWS S3 es el servicio de almacenamiento en la nube de Amazon, que le permite almacenar archivos individuales como objetos en un depósito. Puede cargar archivos desde la línea de comandos en su servidor Linux, o incluso sincronizar directorios completos con S3.

Si solo desea compartir archivos entre instancias EC2, puede usar un Volumen de EFS y móntelo directamente en varios servidores, eliminando la «nube» por completo. Pero no deberías usarlo para todo, porque es mucho más caro que S3, incluso con Acceso poco frecuente activado.

Limitar el acceso de S3 a un usuario de IAM

Es probable que su servidor no necesite acceso de root completo a su cuenta de AWS, por lo que antes de realizar cualquier tipo de sincronización de archivos, debe crear un nuevo usuario de IAM para que lo utilice su servidor. Con un usuario de IAM, puede limitar su servidor para que solo administre sus depósitos de S3.

Desde el Consola de administración de IAM, cree un nuevo usuario y habilite «Acceso programático».

Configurar el menú Detalles del usuario.

Se le pedirá que elija los permisos para este usuario. Cree un nuevo grupo y asígnele el permiso «AmazonS3FullAccess».

Asignar permisos de grupo.

Después de eso, se le dará una clave de acceso y una clave secreta. Tome nota de estos; los necesitará para autenticar su servidor.

También puede asignar manualmente permisos de S3 más detallados, como el permiso para usar un depósito específico o solo para cargar archivos, pero limitar el acceso solo a S3 debería estar bien en la mayoría de los casos.

Sincronización de archivos con s3cmd

s3cmd es una utilidad diseñada para facilitar el trabajo con S3 desde la línea de comandos. No forma parte de la AWS CLI, por lo que deberá instalarlo manualmente desde el administrador de paquetes de su distribución. Para sistemas basados ​​en Debian como Ubuntu, eso sería:

sudo apt-get install s3cmd

Una vez s3cmd está instalado, deberá vincularlo al usuario de IAM que creó para administrar S3. Ejecute la configuración con:

s3cmd --configure

Se le pedirá la clave de acceso y la clave secreta que le proporcionó la Consola de administración de IAM. Pégalos aquí. Hay algunas opciones más, como cambiar los puntos finales para S3 o habilitar el cifrado, pero puede dejarlos todos predeterminados y simplemente seleccionar «Y» al final para guardar la configuración.

Para cargar un archivo, use:

s3cmd put file s3://bucket

Reemplazo de «balde» con el nombre de su balde. Para recuperar esos archivos, ejecute:

s3cmd get s3://bucket/remotefile localfile

Y, si desea sincronizar en un directorio completo, ejecute:

s3cmd sync directory s3://bucket/

Esto copiará todo el directorio en una carpeta en S3. La próxima vez que lo ejecute, solo copiará los archivos que han cambiado desde la última vez que se ejecutó. No eliminará ningún archivo a menos que lo ejecute con el --delete-removed opción.

s3cmd sync no se ejecutará automáticamente, por lo que si desea mantener este directorio actualizado periódicamente, deberá ejecutar este comando con regularidad. Puedes automatizar esto con cron; Abra su crontab con crontab -ey agregue este comando para finalizar:

0 0 * * * s3cmd sync directory s3://bucket >/dev/null 2>&1

Esto sincronizará el «directorio» con el «depósito» una vez al día. Por cierto, si crontab -e te tiene atrapado en vim, puede cambiar el editor de texto predeterminado con export VISUAL=nano;, o lo que prefieras.

s3cmd tiene muchos subcomandos; puedes copiar entre cubos con cp, mover archivos con mve incluso crear y eliminar depósitos de la línea de comandos con mb y rb, respectivamente. Usar s3cmd -h para obtener una lista completa.

Otra opción: AWS CLI

Más allá de s3cmd, hay algunas otras opciones de línea de comando para sincronizar archivos con S3. AWS proporciona sus propias herramientas con la AWS CLI. Necesitará Python 3+ y puede instalar la CLI desde pip3 con:

pip3 install awscli --upgrade --user

Esto instalará el aws comando, que puede utilizar para interactuar con los servicios de AWS. Deberá configurarlo de la misma manera que s3cmd, lo que puede hacer con:

aws configure

Se le pedirá que ingrese la clave de acceso y la clave secreta para su usuario de IAM.

La sintaxis de AWS CLI es similar a s3cmd. Para cargar un archivo, use:

aws s3 cp file s3://bucket

Para sincronizar una carpeta completa, use:

aws s3 sync folder s3://bucket

Puede copiar e incluso sincronizar entre depósitos con los mismos comandos. Puedes usar aws help para obtener una lista de comandos completa, o lea el referencia de comando en su sitio web.

Copias de seguridad completas: Restic, Duplicidad

Si desea realizar copias de seguridad de gran tamaño, es posible que desee utilizar otra herramienta en lugar de una simple utilidad de sincronización. Cuando sincroniza con S3 con s3cmd o la AWS CLI, cualquier cambio que haya realizado sobrescribirá los archivos actuales. Porque la principal preocupación del almacenamiento de archivos en la nube no suele ser falla de la unidad, pero la eliminación accidental sin acceso al historial de revisión, esto es un problema.

Soportes de AWS control de versiones de archivos, que resuelve un poco este problema, pero es posible que aún desee utilizar un programa de copia de seguridad más potente para manejarlo usted mismo, especialmente si está haciendo copias de seguridad de todo el disco.

Duplicidad es una sencilla utilidad que realiza copias de seguridad de archivos en forma de volúmenes TAR cifrados. El primer archivo es una copia de seguridad completa y luego los archivos subsiguientes son incrementales, almacenando solo los cambios realizados desde el último archivo.

Esto es muy eficiente, pero restaurar desde una copia de seguridad es menos eficiente, ya que el proceso de restauración tendrá que seguir la cadena de cambios para llegar al estado final de los datos. Restic resuelve este problema almacenando datos en bloques cifrados deduplicados y conserva una instantánea de cada versión para su restauración. De esta manera, se puede hacer referencia fácilmente al estado actual de los archivos y aún se puede acceder a cada revisión.

Ambas herramientas se pueden configurar para que funcionen con AWS S3, así como con muchos otros proveedores de almacenamiento. Alternativamente, si solo desea realizar una copia de seguridad de las instancias EC2 basadas en EBS, puede utilizar instantáneas de EBS incrementales, aunque es más caro que realizar una copia de seguridad manualmente en S3.

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad