LINUX

Cómo sincronizar archivos y directorios con AWS S3 mediante la herramienta s3cmd

Hoy le mostraremos cómo hacer una copia de seguridad de sus datos en Amazon Web Services. Usaremos s3cmd, un cliente de línea de comandos para el almacenamiento de Amazon s3. Le permite crear, administrar y eliminar depósitos de su terminal y cargar datos desde su servidor.

Instale s3cmd en Ubuntu y CentOS

Para instalar s3cmd en el sistema operativo CentOS, primero debemos agregar el repositorio EPEL.

yum install epel-release

Luego instale s3cmd

yum install s3cmd

En Ubuntu, está dentro del repositorio oficial, por lo que solo necesitamos ejecutar

apt get install s3cmd

Eso hará que s3cmd se instale en su computadora.

Configuración de s3cmd

Ahora que tenemos s3cmd configurado, necesitamos conectarlo a la cuenta de AWS. Suponemos que está familiarizado con los precios de AWS y tiene una cuenta activa, por lo que no analizaremos cómo crearla. Ir directamente a la parte de configuración como tipo de usuario root:

 s3cmd --configure

Y luego trabaje el mensaje de la siguiente manera, cambiando el negrita de sus credenciales:

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key: ACESSSSSSSSSSSSSKEEEEEEY
Secret Key: 8ujSecret/82xqHWZqT5UzT0OCzUVvKeyyy
Default Region [US]:

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password: password
Path to GPG program [/usr/bin/gpg]:

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes]:

On some networks all internet access must go through an HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name:

New settings:
Access Key: ACESSSSSSSSSSSSSKEEEEEEY
Secret Key: 8ujSecret/82xqHWZqT5UzT0OCzUVvKeyyy
Default Region: US
Encryption password: password
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: True
HTTP Proxy server name:
HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n] y
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)

Now verifying that encryption works...
Success. Encryption and decryption worked fine :-)

Save settings? [y/N] y
Configuration saved to '/root/.s3cfg'

Ahora que estamos conectados a AWS, pasamos al siguiente paso usándolo. Enumeraremos todos los comandos relevantes.

1. Creando un cubo

Para crear un depósito en nuestra cuenta, usamos el comando s3cmd mb seguido de la URL del depósito futuro.

s3cmd mb s3://linoxide
Bucket 's3://linoxide/' created

Ahora que lo hemos creado, veamos una lista para ver los depósitos.

2. Listado de depósitos

Para enumerar todos los depósitos que están disponibles actualmente, escriba este comando

s3cmd ls
2016-12-03 15:52 s3://linoxide

Como es una cuenta nueva, solo tenemos una que creamos hace un momento.

3. Poner un directorio en el depósito

La carga de archivos y carpetas se realiza con el comando put. Creemos una carpeta para usar en la computadora local y un archivo en ella.

mkdir test

echo 12345 >> test/file1

Ahora, para poner esta carpeta en nuestro bucket de S3, usamos el comando put

s3cmd put -r test s3://linoxide
upload: 'test/file1' -> 's3://linoxide/test/file1' [1 of 1]
6 of 6 100% in 0s 60.62 B/s done
upload: 'test/file1' -> 's3://linoxide/test/file1' [1 of 1]
6 of 6 100% in 0s 41.88 B/s done

Observe el -r en el comando, significa recursivamente, lo cual es necesario si estamos cargando carpetas. Para archivos, se puede omitir.

4. Carga de archivos

La carga de los archivos, como se mencionó anteriormente, se hace igual que el directorio, excepto que omite -r

s3cmd put test/file1 s3://linoxide
upload: 'test/file1' -> 's3://linoxide/file1' [1 of 1]
6 of 6 100% in 0s 44.00 B/s done
upload: 'test/file1' -> 's3://linoxide/file1' [1 of 1]
6 of 6 100% in 0s 17.77 B/s done

5. Listado del contenido del depósito

Dado que colocamos algunos datos en el depósito, queremos ver qué hay dentro. El comando número uno que hicimos fue para enumerar todos los cubos que tenemos, ahora hacemos el mismo comando con el cubo uri para obtener el contenido del cubo

s3cmd ls s3://linoxide
DIR s3://linoxide/test/
2016-12-03 17:21 6 s3://linoxide/file1

Tenemos prueba de directorio y junto a ella tenemos file1

6. Descarga de archivos y carpetas

La descarga se realiza con el comando get y lo mismo que el comando put, para la carpeta necesita la opción -r del usuario.

s3cmd get -r s3://linoxide/
ERROR: Parameter problem: File ./file1 already exists. Use either of --force / --continue / --skip-existing or give it a new name.

Vemos que el problema aquí es que ya tenemos esos archivos, lo cual es normal, ya que los subimos desde aquí. Limpiemos el espacio.

rm -rf file1 test/

Después de limpiar, podemos descargar

s3cmd get -r s3://linoxide/
download: 's3://linoxide/file1' -> './file1' [1 of 2]
6 of 6 100% in 0s 97.99 B/s done
download: 's3://linoxide/test/file1' -> './test/file1' [2 of 2]
6 of 6 100% in 0s 112.95 B/s done

Podemos descargar directorios o archivos individuales, así como lo que hicimos en el depósito completo.

7. Eliminación de archivos y carpetas

Para eliminar la carpeta, puede usar el comando del, no se necesita un marcador -r

s3cmd del s3://linoxide/test

Para purgar todos los datos del depósito, necesita las opciones -r y -f (vigentes)

s3cmd del -f -r s3://linoxide/

8. Sincronizar directorios completos

s3cmd admite la sincronización de directorios. Por ejemplo, si tenemos 5 archivos dentro de la prueba de directorio (después de hacer touch test/file{1..5} comando), podemos intentar sincronizar ese directorio.

s3cmd sync --dry-run test/ s3://linoxide
upload: 'test/file1' -> 's3://linoxide/file1'
upload: 'test/file2' -> 's3://linoxide/file2'
upload: 'test/file3' -> 's3://linoxide/file3'
upload: 'test/file4' -> 's3://linoxide/file4'
upload: 'test/file5' -> 's3://linoxide/file5'
WARNING: Exiting now because of --dry-run

Se ejecutó con la opción de ejecución en seco, lo que significa que solo enumerará los archivos para sincronizar, y no los sincronizará realmente. Eliminar la barra nos da una ubicación diferente, en la carpeta de prueba

s3cmd sync --dry-run test s3://linoxide
upload: 'test/file1' -> 's3://linoxide/test/file1'
upload: 'test/file2' -> 's3://linoxide/test/file2'
upload: 'test/file3' -> 's3://linoxide/test/file3'
upload: 'test/file4' -> 's3://linoxide/test/file4'
upload: 'test/file5' -> 's3://linoxide/test/file5

Y al eliminar la ejecución en seco, se cargan los archivos.

9. Sincronización con listas de exclusión

Agreguemos algunos archivos con terminación .txt

touch test/file{6..8}.txt

Deberían estar allí junto con otros archivos.

ls test/
file1 file2 file3 file4 file5 file6.txt file7.txt file8.txt

Ahora queremos sincronizar este directorio sin esos archivos que terminan en .txt. Hacemos esto con el siguiente comando

s3cmd sync --dry-run test/ --exclude '*.txt' s3://linoxide

La ejecución del mismo comando sin un marcador de ejecución en seco debería excluir y cargar los archivos.

10. Retirada del balde

Para eliminar el depósito, primero purgue todos los datos, como lo hicimos antes:

s3cmd del -f -r s3://linoxide/

Y luego elimínelo con el comando rb que es para eliminar el cubo

s3cmd rb s3://linoxide/

Conclusión

Hemos instalado s3cmd y lo usamos para hacer una copia de seguridad de los datos en la nube de Amazon. Es una manera rápida y fácil de hacer una copia de seguridad de sus datos, sin tener que llevar consigo su copia de seguridad física. Es decir, si está de acuerdo con los precios de Amazon. De lo contrario, es posible que deba obtener el disco duro adicional y hacer una copia de seguridad de sus datos a la antigua. Gracias por leer, esto es todo.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar