Entrar Empieza gratis
S3

Cómo copiar una carpeta de tu servidor a S3 cada noche con un solo comando (aws s3 sync)

Copias de seguridad de los ficheros de tu web a un bucket S3 sin programas de pago: instalar la herramienta de AWS en la máquina, darle una clave con permisos solo para ese bucket, probar el comando y programarlo cada noche. Para quien no ha usado la terminal casi nunca.

⏱ 25 minutos ◎ Nivel medio Actualizada el 26/10/2026

Las instantáneas de la máquina son la copia "gorda": todo el disco, para cuando algo se rompe. Pero a veces quieres algo más fino y más barato: una copia diaria de una carpeta (las subidas de la web, los documentos, un volcado de la base de datos) en un sitio fuera de la máquina, del que puedas recuperar un solo fichero sin restaurar nada. Eso es S3, y la herramienta de línea de comandos de AWS trae un comando, aws s3 sync, que copia solo lo que ha cambiado. Programado cada noche, es la copia de ficheros más barata y fiable que puedes tener.

Antes de empezar: qué significa cada cosa

S3 y bucket
S3 es el almacén de ficheros de Amazon; un bucket es la "carpeta raíz" donde los guardas, con nombre único en el mundo.
AWS CLI
La herramienta de línea de comandos de AWS: un programa que se instala en la máquina y permite dar órdenes a AWS escribiendo comandos.
sync (sincronizar)
Comparar una carpeta con el bucket y copiar solo lo nuevo o cambiado. La primera vez copia todo; las siguientes, poco.
Clave de acceso
El usuario y contraseña para programas. Aquí la usará la máquina para hablar con S3; debe tener permiso solo para ese bucket.
Cron
El programador de tareas de Linux: ejecuta un comando a la hora que le digas, cada día.
Control de versiones
Opción de S3 que guarda las versiones anteriores de un fichero. Protege de que una copia nocturna sobrescriba algo bueno con algo roto.

Paso a paso

  1. Crea el bucket

    Consola de S3, Crear bucket, nombre único (copias-miempresa-web), misma región que la máquina (así la transferencia entre ambos no gasta cuota ni se cobra), bloquear todo el acceso público activado, control de versiones activado y cifrado por defecto. Crea.

  2. Crea una clave que solo pueda escribir en ese bucket

    En IAM, crea una política con este contenido (cambia el nombre del bucket) y un usuario copias-web con esa política y una clave de acceso, como explica la guía de usuario IAM con permisos mínimos:

    {
      "Version": "2012-10-17",
      "Statement": [
        { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::copias-miempresa-web" },
        { "Effect": "Allow", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": "arn:aws:s3:::copias-miempresa-web/*" }
      ]
    }

    Si esa clave se filtrara algún día, lo único que podría hacer alguien es tocar ese bucket. Nada más.

  3. Instala la herramienta de AWS en la máquina

    Por SSH, en Ubuntu o Debian:

    sudo apt update && sudo apt install -y awscli

    (En Amazon Linux ya viene instalada.) Configúrala con la clave del paso anterior:

    aws configure

    Te pide el identificador de la clave, el secreto, la región (eu-west-1, por ejemplo) y el formato de salida (deja json). Quedan guardados en la carpeta del usuario, solo legibles por él.

  4. Prueba el comando a mano

    aws s3 sync /var/www/html/uploads s3://copias-miempresa-web/uploads --delete

    La primera vez tarda, porque sube todo; verás cada fichero pasar. Las siguientes solo suben lo que ha cambiado. La opción --delete borra en el bucket lo que ya no está en la carpeta, para que la copia sea un espejo; con el control de versiones activado, lo borrado sigue recuperable. Comprueba en la consola de S3 que los ficheros están ahí.

  5. Añade la base de datos si la tienes

    Para que la copia tenga también la base de datos, vuélcala antes a un fichero en la misma carpeta que se sincroniza, por ejemplo con un pequeño script /usr/local/bin/copia.sh:

    #!/bin/bash
    mysqldump -u usuario -pCONTRASEÑA nombre_bd | gzip > /var/copias/bd-$(date +%F).sql.gz
    find /var/copias -name "bd-*.sql.gz" -mtime +7 -delete
    aws s3 sync /var/copias s3://copias-miempresa-web/bd
    aws s3 sync /var/www/html/uploads s3://copias-miempresa-web/uploads --delete

    Dale permisos de ejecución (chmod 700) y pruébalo con sudo /usr/local/bin/copia.sh. La línea de find borra en la máquina los volcados de más de una semana; en S3 se quedan.

  6. Prográmalo cada noche

    sudo crontab -e

    Añade al final una línea para las 3:30 de la madrugada (hora de la máquina, que suele ser UTC):

    30 3 * * * /usr/local/bin/copia.sh >> /var/log/copia.log 2>&1

    Guarda. Al día siguiente mira /var/log/copia.log y la fecha de los ficheros en S3. Pon además una regla de ciclo de vida en el bucket que borre las versiones antiguas pasados 30 o 90 días, para que no crezca sin fin (guía en esta sección).

Qué puede salir mal

"Access Denied" al sincronizar

La política no cubre lo que pides: comprueba que el nombre del bucket es exacto en las dos líneas de Resource, y que la primera (ListBucket) no lleva /* y la segunda sí.

La copia tarda horas

Primera ejecución con muchos ficheros pequeños: normal. Si cada noche tarda, hay ficheros que cambian siempre (cachés, registros): exclúyelos con --exclude "cache/*".

La contraseña de la base de datos está en el script

Mejor ponla en el fichero ~/.my.cnf del usuario root con permisos 600, y quita -pCONTRASEÑA del comando. Y que el script solo lo pueda leer root.

He borrado un fichero sin querer y la copia nocturna lo borró también

Para eso está el control de versiones: en la consola de S3, activa "Mostrar versiones" en la carpeta y recupera la versión anterior. Sin control de versiones, se habría perdido: por eso se activa en el paso 1.

En Simplio

En Simplio lanzas la copia nocturna a S3 desde el catálogo de scripts: eliges la carpeta de la máquina y el bucket, y Simplio crea la clave con permisos solo para ese bucket, instala lo necesario y programa la tarea, sin abrir una terminal. El bucket se ve en Simplio como una carpeta, con sus versiones, para recuperar un fichero con dos clics. Y si una noche la copia no aparece, te avisa por correo.

Lo mismo, en AWS y en Simplio

En la consola de AWSEn Simplio
Montar la copia nocturnaBucket, política IAM, clave, instalar CLI, script, cron: 6 pasos y una terminal, 25 minutosScript "Copia a S3" del catálogo: eliges la carpeta y el bucket, Simplio crea la clave limitada y programa la tarea
Saber si anoche se hizoMirar el log en la máquinaAviso por correo si una copia programada no aparece
Recuperar un ficheroConsola de S3, buscar, versionesAbrir el bucket en Simplio como una carpeta y descargar

Probarlo gratis 15 días Ver cómo funciona

Todo esto, sin la consola de AWS

Simplio es un panel en español para manejar tus cuentas de AWS: máquinas, copias programadas, bases de datos, dominios, correo y lo que te cobra AWS, con permisos por persona y doble factor. Sin instalar nada en tus servidores.

Empieza gratis 15 días, sin tarjeta

¿Ya eres cliente? Acceso clientes.