s3cmd es una pequeña aplicación que sirve para interactuar con el servicio de almacenamiento de Amazon, S3. Hace un tiempo ya os había contado cómo realizar backups con s3cmd.
Si utilizas ubuntu o debian, s3cmd está en los repositorios oficiales, pero una versión bastante antigua con muchos fallos. En mi caso el fallo que más me estaba afectando es cuando se se producía timeout hacía que la aplicación se cerrara sin finalizar las tareas, cosa que últimamente se estaba convirtiendo un algo demasiado habitual.
Por suerte el desarrollador de la aplicación ha creado un repositorio donde mantiene actualizadas las versiones estables para debian 5 y 6 y ubuntu 10.04 LTS y superiores. Para actualizar sólo hay que ejecutar los siguientes comandos.
wget -O- -q http://s3tools.org/repo/deb-all/stable/s3tools.key | sudo apt-key add - sudo wget -O/etc/apt/sources.list.d/s3tools.list http://s3tools.org/repo/deb-all/stable/s3tools.list sudo apt-get update && sudo apt-get install s3cmd
Fuente: s3tools.org

Amazon S3 es un servicio de almacenamiento masivo de información con unos costes bastante aceptables. Para poder manejarlo hay varias herramientas pero para mi la más cómoda es s3cmd, un sencillo programa en línea de comandos que nos permite manejar nuestra cuenta en S3.
Lo primero es instalarlo, desde debian o ubuntu con un simple
apt-get install s3cmd
lo tenemos listo y si no podéis ir a http://s3tools.org/download y descargarlo desde allí.
Inmediatamente deberíamos configurarlo, para ello hay que ejecutarlo con el parámetro –configure
s3cmd –configure
Lo primero que nos va a pedir el “Access Key” y el “Secret Key” de nuestra cuenta de Amazon. Para obtenerlos debemos ir a la página de Amazon, menú “cuenta” -> “Credenciales de Seguridad”
Después nos pedirá una clave que se utilizará para cifrar todo lo que se suba a Amazon y algunos datos más como la ruta del gpg y datos si estuvieramos detrás de un firewall. Al final del proceso nos crea un fichero .s3cfg en nuestro directorio de usuario.
Los comandos de s3cmd son:
s3cmd mb s3://BUCKET
s3cmd rb s3://BUCKET
s3cmd ls [s3://BUCKET[/PREFIX]]
s3cmd la
s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]
s3cmd get s3://BUCKET/OBJECT LOCAL_FILE
s3cmd del s3://BUCKET/OBJECT
s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX] or s3://BUCKET[/PREFIX] LOCAL_DIR
s3cmd du [s3://BUCKET[/PREFIX]]
s3cmd info s3://BUCKET[/OBJECT]
s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
s3cmd setacl s3://BUCKET[/OBJECT]
s3cmd sign STRING-TO-SIGN
s3cmd fixbucket s3://BUCKET[/PREFIX]
s3cmd cflist
s3cmd cfinfo 1[/cf]
s3cmd cfcreate s3://BUCKET
s3cmd cfdelete cf://DIST_ID
s3cmd cfmodify cf://DIST_ID
Los comandos básicos con ficheros son put para subir todo el contenido al bucket, get para descargarlo y sync para sincronizar los contenidos.
P.E.:
s3cmd sync --delete-remove --recursive /mi-directorio/datos/ s3://BUCKET/datos-de-mi-directorio/