PT
EspañolEnglishFrançaisDeutschPortuguêsItaliano
Entrar Comece grátis
S3

Como copiar uma pasta do seu servidor para o S3 todas as noites com um único comando (aws s3 sync)

Cópias de segurança dos ficheiros do seu site para um bucket S3 sem programas pagos: instalar a ferramenta da AWS na máquina, dar-lhe uma chave com permissões só para esse bucket, testar o comando e agendá-lo todas as noites. Para quem quase nunca usou o terminal.

⏱ 25 minutos ◎ Nível médio Atualizado em 26/10/2026

Os instantâneos da máquina são a cópia "grossa": todo o disco, para quando algo se estraga. Mas às vezes quer algo mais fino e mais barato: uma cópia diária de uma pasta (os carregamentos do site, os documentos, um despejo da base de dados) num sítio fora da máquina, de onde possa recuperar um único ficheiro sem restaurar nada. Isso é o S3, e a ferramenta de linha de comandos da AWS traz um comando, aws s3 sync, que copia só o que mudou. Agendado todas as noites, é a cópia de ficheiros mais barata e fiável que pode ter.

Antes de começar: o que significa cada coisa

S3 e bucket
O S3 é o armazém de ficheiros da Amazon; um bucket é a "pasta raiz" onde os guarda, com nome único no mundo.
AWS CLI
A ferramenta de linha de comandos da AWS: um programa que se instala na máquina e permite dar ordens à AWS escrevendo comandos.
sync (sincronizar)
Comparar uma pasta com o bucket e copiar só o que é novo ou mudou. Da primeira vez copia tudo; das seguintes, pouco.
Chave de acesso
O utilizador e palavra-passe para programas. Aqui será usada pela máquina para falar com o S3; deve ter permissão só para esse bucket.
Cron
O agendador de tarefas do Linux: executa um comando à hora que lhe disser, todos os dias.
Controlo de versões
Opção do S3 que guarda as versões anteriores de um ficheiro. Protege de uma cópia noturna substituir algo bom por algo estragado.

Passo a passo

  1. Crie o bucket

    Consola do S3, Criar bucket, nome único (copias-miempresa-web), mesma região que a máquina (assim a transferência entre ambos não gasta quota nem é cobrada), bloquear todo o acesso público ativado, controlo de versões ativado e encriptação por defeito. Crie.

  2. Crie uma chave que só possa escrever nesse bucket

    No IAM, crie uma política com este conteúdo (mude o nome do bucket) e um utilizador copias-web com essa política e uma chave de acesso, como explica o guia do utilizador IAM com permissões mínimas:

    {
      "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/*" }
      ]
    }

    Se essa chave um dia vazasse, a única coisa que alguém poderia fazer era mexer nesse bucket. Nada mais.

  3. Instale a ferramenta da AWS na máquina

    Por SSH, em Ubuntu ou Debian:

    sudo apt update && sudo apt install -y awscli

    (No Amazon Linux já vem instalada.) Configure-a com a chave do passo anterior:

    aws configure

    Pede-lhe o identificador da chave, o segredo, a região (eu-west-1, por exemplo) e o formato de saída (deixe json). Ficam guardados na pasta do utilizador, legíveis só por ele.

  4. Teste o comando à mão

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

    Da primeira vez demora, porque carrega tudo; verá cada ficheiro a passar. Das seguintes só carrega o que mudou. A opção --delete apaga no bucket o que já não está na pasta, para que a cópia seja um espelho; com o controlo de versões ativado, o apagado continua recuperável. Confirme na consola do S3 que os ficheiros lá estão.

  5. Acrescente a base de dados, se a tiver

    Para que a cópia tenha também a base de dados, despeje-a antes para um ficheiro na mesma pasta que se sincroniza, por exemplo com um pequeno 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

    Dê-lhe permissões de execução (chmod 700) e teste-o com sudo /usr/local/bin/copia.sh. A linha do find apaga na máquina os despejos com mais de uma semana; no S3 ficam.

  6. Agende-o todas as noites

    sudo crontab -e

    Acrescente no fim uma linha para as 3:30 da madrugada (hora da máquina, que costuma ser UTC):

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

    Guarde. No dia seguinte veja /var/log/copia.log e a data dos ficheiros no S3. Ponha ainda uma regra de ciclo de vida no bucket que apague as versões antigas passados 30 ou 90 dias, para que não cresça sem fim (guia nesta secção).

O que pode correr mal

"Access Denied" ao sincronizar

A política não cobre o que pede: confirme que o nome do bucket está exato nas duas linhas de Resource, e que a primeira (ListBucket) não leva /* e a segunda sim.

A cópia demora horas

Primeira execução com muitos ficheiros pequenos: normal. Se todas as noites demora, há ficheiros que mudam sempre (caches, registos): exclua-os com --exclude "cache/*".

A palavra-passe da base de dados está no script

Melhor pô-la no ficheiro ~/.my.cnf do utilizador root com permissões 600, e tirar -pCONTRASEÑA do comando. E que o script só possa ser lido pelo root.

Apaguei um ficheiro sem querer e a cópia noturna também o apagou

É para isso que serve o controlo de versões: na consola do S3, ative "Mostrar versões" na pasta e recupere a versão anterior. Sem controlo de versões, ter-se-ia perdido: por isso se ativa no passo 1.

No Simplio

No Simplio lança a cópia noturna para o S3 a partir do catálogo de scripts: escolhe a pasta da máquina e o bucket, e o Simplio cria a chave com permissões só para esse bucket, instala o necessário e agenda a tarefa, sem abrir um terminal. O bucket vê-se no Simplio como uma pasta, com as suas versões, para recuperar um ficheiro com dois cliques. E se uma noite a cópia não aparecer, avisa-o por e-mail.

O mesmo, na AWS e no Simplio

Na consola da AWSNo Simplio
Montar a cópia noturnaBucket, política IAM, chave, instalar a CLI, script, cron: 6 passos e um terminal, 25 minutosScript "Cópia para S3" do catálogo: escolhe a pasta e o bucket, o Simplio cria a chave limitada e agenda a tarefa
Saber se ontem à noite se fezVer o log na máquinaAviso por e-mail se uma cópia agendada não aparecer
Recuperar um ficheiroConsola do S3, procurar, versõesAbrir o bucket no Simplio como uma pasta e descarregar

Experimentar grátis 15 dias Ver como funciona

Tudo isto, sem a consola da AWS

O Simplio é um painel em português para gerir as suas contas AWS: máquinas, cópias programadas, bases de dados, domínios, e-mail e o que a AWS lhe cobra, com permissões por pessoa e duplo fator. Sem instalar nada nos seus servidores.

Comece grátis 15 dias, sem cartão

Já é cliente? Acesso de clientes.