Como hacer backups en amazon s3 usando S5cmd
Una de la tareas principales como administrador de servidores es guardar las copias de seguridad de datos (backups). Estas coipas pueden ser dump de banco de datos, logs, reportes, imágenes, archivos, etc. Lo ideal es estos backup se almacenen de manera segura y confiable, lejos de la red de servidores.
Uno de los servicios conocidos para almacenar datos es Amazon S3, que permite almacenar datos a un precio relativamente bajo.
Para utilizar amazon s3, estando en linux, lo mejor es usar S5cmd (El sucesor de S3cmd y S4cmd). Funciona por línea de comandos y esto facilita la creación de scripts que luego pueden ser llamados a través de un agendador de tareas. Con esta herramienta se puede ver, crear buckets (directorios en Amazon S3), subir/bajar archivos y todo por la terminal.
S5cmd está escrito en un lenguaje, Go, en lugar de python (S3cmd, s4cmd) que aprovecha mejor los subprocesos y es más rápida de ejecutar porque es compilado y no interpretado.
Esta herramienta es gratuita y de código abierto desarrollado por Peak Games. Realiza una amplia gama de tareas de administración de objetos tanto para servicios de almacenamiento en la nube como para sistemas de archivos locales.
Instalación
En Mac OS X:
$ brew tap peakgames/s5cmd https://github.com/peakgames/s5cmd $ brew install s5cmd
En Linux, como la herramienta está escrita en Go (Es necesario tener instalado goland y git), solo es necesario ejecutar el siguiente comando:
$ go get -u github.com/peakgames/s5cmd
También existe binarios ya compilados para Mac y Linux. Lo puedes descargar en la siguiente dirección: https://github.com/peak/s5cmd/releases
Por ejemplo s5cmd_1.0.0_Linux-64bit.tar.gz
Luego de descargar lo descomprimimos y copiamos en la carpeta de ejecutables.
$ tar -xz -f s5cmd_1.0.0_Linux-64bit.tar.gz -C /usr/bin/ s5cmd
Credenciales de AWS para s3
Para utilizar es necesario tener las credenciales de aws para usar s3, para ello cree un directorio que contendrá su archivo de credenciales.
$ mkdir ~/.aws
Ahora cree su archivo de credenciales (por ejemplo: credentials)
$ vi ~/.aws/credentials
Ingrese su aws_access_key_id y aws_secret_access_key (clave obtenida de Amazon s3) en el formato que se muestra a continuación:
[default] aws_access_key_id = AquiTuIDLlaveAcceso aws_secret_access_key = AquiTuClaveSecreta
Uso
Los comandos están en formato:
comando [opciones de comando] argumento1 [argumento2]
Para obtener la lista de opciones de s5cmd:
$ s5cmd -help
Para obtener una lista de comandos disponibles, ejecute sin argumentos:
$ s5cmd
s5cmd en acción
Descargar de Amazon S3 para nuestra pc
Este comando copia object.gz para el directorio actual
$ s5cmd cp s3://bucket/object.gz .
Este comando copia el contenido de s3://bucket/logs/2020/03/ para el directorio logs
$ s5cmd cp 's3://bucket/logs/2020/03/*' logs/
Subir para Amazon S3 desde nuestra PC
Este comando copia object.gz para s3://bucket/
$ s5cmd cp object.gz s3://bucket/
Este comando copia el directorio “directory” y su contenido para s3://bucket/
$ s5cmd cp directory/ s3://bucket/
Para más ejemplos: https://github.com/peak/s5cmd