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.