Amazon S3 es un buen lugar para realizar copias de seguridad y almacenar sus archivos de forma económica en la nube. Mientras que algunas personas lo usan para almacenar sus datos personales, hay otros que lo usan para almacenar imágenes y scripts para sus sitios web, e incluso lo usan como CDN. En su escritorio, puede acceder y administrar fácilmente su cuenta de Amazon S3 con aplicaciones como CloudBerry, DragonDisk, etc., pero ¿qué sucede si necesita acceder desde la línea de comandos? Aquí es donde S3cmd resulta útil.
S3cmd es una herramienta de línea de comandos gratuita para cargar, recuperar y administrar datos en Amazon S3. Además de S3, también es compatible con otros proveedores de servicios de almacenamiento en la nube que utilizan el protocolo S3, como Google Cloud Storage o DreamHost DreamObjects. El mejor uso para esta herramienta es en un servidor remoto donde todo se hace en la línea de comandos. Alternativamente, también puede usarlo para crear scripts por lotes y copias de seguridad automatizadas en S3.
S3cmd está escrito en Python, por lo que es prácticamente compatible con todos los sistemas operativos, siempre que Python esté instalado.
Instalación
S3cmd se encuentra en la mayoría de los repositorios de Linux. En Debian/Ubuntu, o cualquier otra distribución basada en apt, puede instalar S3cmd con el comando:
sudo apt-get install s3cmd
Para Fedora, Centos o cualquier otra distribución basada en yum:
Alternativamente, puede descargar el código fuente, descomprima el paquete y ejecute el instalador:
sudo python setup.py install
Empezando
Antes de comenzar, deberá tener listas las claves secretas y de acceso de su Amazon S3. Puede ubicar las claves de Acceso y Secreto en el Consola de administración de Amazon.
Para comenzar, abra la terminal y escriba:
Primero le pedirá que ingrese sus claves de acceso y secretas.
A continuación, debe ingresar una clave de cifrado y la ruta al programa GPG.
Después de la clave de encriptación está el mensaje para usar el protocolo HTTPS. La opción predeterminada es «No», pero puede configurarla en «Sí» para una conexión más segura a Amazon S3. Tenga en cuenta que el uso del protocolo HTTPS reducirá la velocidad de transferencia y no se puede usar si está usando un proxy.
Una vez que haya configurado y probado los ajustes, puede proceder a utilizar S3cmd. Si necesita cambiar la configuración, puede editar el archivo .s3cfg en su directorio de inicio o ejecutar el s3cmd --configure
comando de nuevo.
Uso
Primero, para ver los cubos en su cuenta S3, puede usar el ls
dominio.
Para crear un depósito, utilice el mb
dominio:
s3cmd mb s3://test-s3cmd-bucket
Tenga en cuenta que deberá prefijar el nombre del depósito con «s3://»
Para listar el contenido en un depósito, use el ls
comando junto con el nombre del depósito. Por ejemplo:
s3cmd ls s3://test-s3cmd-bucket
Subiendo archivo al depósito
La forma más fácil de cargar un archivo a través de S3cmd es con el put
dominio. Por ejemplo:
s3cmd put text.txt s3://test-s3cmd-bucket
Además, puede utilizar el --encrypt
parámetro para cifrar el archivo antes de cargarlo en S3.
s3cmd put --encrypt text.txt s3://test-s3cmd-bucket
El permiso predeterminado para el put
El comando es privado, lo que significa que solo usted puede ver el archivo. Si necesita que el archivo sea de acceso público, puede agregar el parámetro --acl-public
s3cmd put --acl-public text.txt s3://test-s3cmd-bucket
Para un control más granular, utilice el --acl-grant=PERMISSION:EMAIL or USER_CANONICAL_ID
parámetro. Por ejemplo:
s3cmd put --acl-grant=read:damien@gmail.com text.txt s3://test-s3cmd-bucket
El «PERMISO» puede ser «leer», «escribir», «read_acp», «write_acp», «full_control», «all».
Recuperando archivos del depósito
Para recuperar un archivo, utilice el get
dominio.
s3cmd get s3://test-s3cmd-bucket/text.txt text.txt
Para descargar todos los archivos en el depósito, simplemente agregue el --recursive
parámetro.
s3cmd get --recursive s3://test-s3cmd-bucket
Eliminación de archivos del depósito
El comando de eliminación para s3cmd es simplemente del
. Por ejemplo:
s3cmd del s3://test-s3cmd-bucket/text.txt
También puede utilizar el --recursive
parámetro para eliminar todos los archivos en el depósito.
s3cmd del --recursive s3://test-s3cmd-bucket
Para obtener más comandos S3cmd, consulta su guía de uso aquí.
Uso avanzado: sincronizar una carpeta con S3
Supongamos que almacena todos sus archivos importantes en una carpeta y desea que se sincronice con S3. S3cmd viene con un sync
comando que puede sincronizar la carpeta local con el destino remoto.
s3cmd sync --delete-removed ~/SecretFolder s3://my-secret-bucket/
Todo lo que tiene que hacer es crear un cronjob para ejecutar el comando de sincronización regularmente.
1. Abra el crontab.
2. Agregue la siguiente línea al final de crontab. Guarde y salga del crontab.
5 * * * * s3cmd sync --delete-removed ~/SecretFolder s3://my-secret-bucket/
Eso es todo. Su sistema ahora sincronizará la carpeta secreta con S3 cada 5 minutos. Puede cambiar el valor para ejecutar el comando de sincronización en su intervalo preferido. Todos los archivos que eliminó de la carpeta secreta también se eliminarán de S3.
Conclusión
Para aquellos que necesitan trabajar en el entorno de la línea de comandos, S3cmd es realmente una gran herramienta para acceder y administrar Amazon S3 desde la línea de comandos. No solo es fácil de usar, también viene con muchas opciones para necesidades avanzadas de uso y secuencias de comandos.