Pular para o conteúdo principal

AWS S3 cp: O guia completo para transferências de arquivos do AWS S3

Saiba como copiar arquivos de e para o S3 usando o comando aws s3 cp. Explore tudo, desde transferências básicas e cópia recursiva até scripts de automação e solução de erros comuns - tudo com exemplos práticos e reais.
Actualizado 19 de mar. de 2025  · 15 min de leitura

A cópia manual de arquivos para o armazenamento da AWS pode ser entediante, propensa a erros e ineficiente, especialmente quando você lida com grandes quantidades de dados. Você não quer isso.

A interface de linha de comando (CLI) do AWS oferece uma ferramenta conveniente chamada aws s3 cp que simplifica esse processo. Esse comando permite que você copie arquivos de e para os buckets do Amazon S3 com comandos simples e com script que funcionam em todos os sistemas operacionais. O uso da CLI do AWS não apenas economiza tempo, mas também permite a automação de tarefas rotineiras de transferência de arquivos.

O comando aws s3 cp oferece muitas opções para lidar com cenários complexos de transferência de arquivos. Você pode copiar arquivos individuais, transferir recursivamente diretórios inteiros, filtrar arquivos com base em padrões e até mesmo especificar diferentes classes de armazenamento para otimização de custos.

Neste tutorial, mostrarei tudo o que você precisa saber sobre o uso eficaz do aws s3 cp, desde comandos básicos até técnicas avançadas e estratégias de automação.

> Você é novo na AWS e não tem certeza sobre o armazenamento em nuvem e o S3? Nosso guia detalhadosobre S3 e EFS é o lugar perfeito para você começar. Se você estiver interessado especificamente no S3, confira nosso guia detalhado sobre o S3.

O que é o AWS S3 cp?

O comando aws s3 cp é um utilitário da interface de linha de comando do AWS que permite que você copie arquivos entre o sistema local e o armazenamento do Amazon S3. 

Essencialmente, ele foi projetado para oferecer uma experiência familiar de linha de comando semelhante ao comando padrão do Linux cp, mas adaptado para interagir com os buckets do S3.

Em sua essência, o aws s3 cp conecta sua máquina local à infraestrutura de armazenamento em nuvem da AWS. Quando você executa um comando aws s3 cp, a CLI do AWS lida com aautenticação e a fragmentação de arquivos para grandes transferências e garante a integridade dos dados durante o processo de cópia. Esse utilitário suporta a cópia de arquivos individuais, vários arquivos usando curingas e estruturas de diretório inteiras usando operações recursivas.

O aws s3 cp é capaz de muitas coisas, mas vou listar apenas algumas:

  • Transferências bidirecionais (upload para o S3 ou download do S3).
  • Cópia recursiva de estruturas de diretórios inteiras.
  • Suporte a várias classes de armazenamento S3 (Standard, Intelligent-Tiering, Glacier, etc.).
  • Filtragem de arquivos usando padrões de inclusão/exclusão.
  • Preservação de metadados de arquivos durante as transferências.
  • Integração com o AWS Identity and Access Management (IAM) para segurança.

No entanto, o poder do aws s3 cp está em sua flexibilidade e integração com o ecossistema da AWS. Você pode especificar diferentes parâmetros para controlar aspectos como classe de armazenamento, criptografia, metadados, controle de acesso e muito mais. Isso o torna adequado para tudo, desde simples transferências únicas de arquivos até soluções complexas e automatizadas de backup.

O comando é diferente de usar o Console de gerenciamento do AWS, que requer navegação manual e cliques. O comando aws s3 cp pode ser executado diretamente do seu terminal ou incorporado a scripts e fluxos de trabalho automatizados. Esse acesso programático ao S3 é essencial para muitos profissionais de tecnologia, especialmente engenheiros de DevOps e cientistas de dados.

Para concluir, o aws s3 cp oferece uma solução confiável e com script que pode lidar com transferências maciças e manter o desempenho. Ele pode retomar uploads e downloads interrompidos, o que o torna particularmente útil ao lidar com conexões de rede instáveis ou transferir arquivos extremamente grandes.

A seguir, orientarei você sobre a parte chata: configurar a CLI do AWS no seu sistema.

Configuração da CLI do AWS e do AWS S3

Antes de se aprofundar no comando aws s3 cp, você precisa ter a AWS CLI instalada e configurada corretamente no sistema. Não se preocupe se você nunca trabalhou com a AWS antes - o processo de configuração é fácil e deve levar menos de 10 minutos.

Vou dividir isso em três fases simples: instalar a ferramenta AWS CLI, configurar suas credenciais e criar seu primeiro bucket S3 para armazenamento.

Instalando a CLI do AWS

O processo de instalação difere um pouco de acordo com o sistema operacional que você está usando.

Para sistemas Windows:

Para sistemas Linux:

Execute os três comandos a seguir no Terminal:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Para sistemas macOS:

Supondo que você tenha o Homebrew instalado, execute esta linha a partir do Terminal:

brew install awscli

Se você não tiver o Homebrew, use esses dois comandos:

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

Para confirmar que a instalação foi bem-sucedida, execute aws --version em seu terminal. Você deverá ver algo parecido com isto:

Imagem 1 - Versão da CLI do AWS

Imagem 1 - Versão da CLI do AWS

Configuração da CLI do AWS

Com a CLI instalada, é hora de configurar suas credenciais do AWS para autenticação.

Primeiro, acesse sua conta do AWS e navegue até o painel de serviços do IAM. Crie um novo usuário com acesso programático e anexe a política de permissões S3 apropriada:

Imagem 2 - Usuário do AWS IAM

Imagem 2 - Usuário do AWS IAM

Em seguida, acesse a guia "Credenciais de segurança" e gere um novo par de chaves de acesso. Certifique-se de salvar o ID da chave de acesso e a chave de acesso secreta em algum lugar seguro - a Amazon não mostrará a você a chave secreta novamente após essa tela:

Imagem 3 - Credenciais de usuário do AWS IAM

Imagem 3 - Credenciais de usuário do AWS IAM

Agora, abra o terminal e execute o comando aws configure. Você será solicitado a fornecer quatro informações: o ID da chave de acesso, a chave de acesso secreta, a região padrão (estou usando eu-central-1) e o formato de saída preferido (normalmente json):

Imagem 4 - Configuração da CLI do AWS

Imagem 4 - Configuração da CLI do AWS

Para ter certeza de que tudo está conectado corretamente, verifique sua identidade com o seguinte comando:

aws sts get-caller-identity

Se configurado corretamente, você verá os detalhes da sua conta:

Imagem 5 - Comando de conexão de teste da CLI da AWS

Imagem 5 - Comando de conexão de teste da CLI da AWS

Criando um bucket S3

Por fim, você precisa criar um bucket S3 para armazenar os arquivos que serão copiados.

Vá para a seção de serviço S3 no Console do AWS e clique em "Criar bucket". Lembre-se de que os nomes dos buckets devem ser globalmente exclusivos em toda a AWS. Escolha um nome distinto, deixe as configurações padrão por enquanto e clique em "Create" (Criar):

Imagem 6 - Criação de um balde do AWS

Imagem 6 - Criação de um balde do AWS

Depois de criado, seu novo bucket aparecerá no console. Você também pode confirmar sua existência por meio da linha de comando:

aws s3 ls

Imagem 7 - Todos os buckets S3 disponíveis

Imagem 7 - Todos os buckets S3 disponíveis

Todos os buckets S3 são configurados como privados por padrão, portanto, tenha isso em mente. Se você pretende usar esse bucket para arquivos acessíveis ao público, precisará modificar as políticas do bucket de acordo.

Agora você está totalmente equipado para começar a usar o comando aws s3 cp para transferir arquivos. Vamos começar com o básico a seguir.

Sintaxe básica do comando cp do AWS S3

Agora que você tem tudo configurado, vamos nos aprofundar no uso básico do comando aws s3 cp. Como de costume na AWS, a beleza está na simplicidade, embora o comando possa lidar com diferentes cenários de transferência de arquivos.

Em sua forma mais básica, o comando aws s3 cp segue esta sintaxe:

aws s3 cp <source> <destination> [options]

Em que e podem ser caminhos de arquivos locais ou URIs S3 (que começam com s3://). Vamos explorar os três casos de uso mais comuns.

Copiar um arquivo do local para o S3

Para copiar um arquivo do seu sistema local para um bucket do S3, a origem será um caminho local e o destino será um URI do S3:

aws s3 cp /Users/dradecic/Desktop/test_file.txt s3://testbucket-aws-cp-dradecic/test_file.txt

Esse comando faz o upload do arquivo test_file.txt do diretório fornecido para o bucket S3 especificado. Se a operação for bem-sucedida, você verá uma saída do console como esta:

Imagem 8 - Saída do console após a cópia do arquivo local

Imagem 8 - Saída do console após a cópia do arquivo local

E, no console de gerenciamento do AWS, você verá o arquivo carregado:

Imagem 9 - Conteúdo do bucket S3

Imagem 9 - Conteúdo do bucket S3

Da mesma forma, se você quiser copiar uma pasta local para o seu bucket S3 e colocá-la, digamos, em outra pasta aninhada, execute um comando semelhante a este:

aws s3 cp /Users/dradecic/Desktop/test_folder s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder/ --recursive

Imagem 10 - Conteúdo do bucket S3 após o upload de uma pasta

Imagem 10 - Conteúdo do bucket S3 após o upload de uma pasta

O sinalizador --recursive garantirá que todos os arquivos e subpastas dentro da pasta sejam copiados.

Lembre-se de que o S3 não tem pastas de fato - a estrutura do caminho é apenas parte da chave do objeto, mas funciona conceitualmente como pastas.

Copiando um arquivo do S3 para o local

Para copiar um arquivo do S3 para o seu sistema local, basta inverter a ordem: a origem se torna o URI do S3 e o destino é o caminho local:

aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt

Esse comando faz o download de test_file.txt do seu bucket S3 e o salva como downloaded_test_file.txt no diretório fornecido. Você o verá imediatamente em seu sistema local:

Imagem 11 - Baixando um único arquivo do S3

Imagem 11 - Baixando um único arquivo do S3

Se você omitir o nome do arquivo de destino, o comando usará o nome do arquivo original:

aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt .

Imagem 12 - Conteúdo do arquivo baixado

Imagem 12 - Conteúdo do arquivo baixado

O ponto (.) representa o seu diretório atual, portanto, você fará o download de test_file.txt para o seu local atual.

E, por fim, para baixar um diretório inteiro, você pode usar um comando semelhante a este:

aws s3 cp s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder /Users/dradecic/Documents/test_folder --recursive

Imagem 13 - Conteúdo da pasta baixada

Imagem 13 - Conteúdo da pasta baixada

Lembre-se de que o sinalizador --recursive é essencial ao trabalhar com vários arquivos - sem ele, o comando falhará se a fonte for um diretório.

Com esses comandos básicos, você já pode realizar a maioria das tarefas de transferência de arquivos de que precisará. Mas, na próxima seção, você aprenderá opções mais avançadas que lhe darão maior controle sobre o processo de cópia.

Opções e recursos avançados do AWS S3 cp

O AWS oferece algumas opções avançadas que permitem a você maximizar as operações de cópia de arquivos. Nesta seção, mostrarei alguns dos sinalizadores e parâmetros mais úteis que ajudarão você em suas tarefas diárias.

Usando os sinalizadores --exclude e --include

Às vezes, você deseja copiar apenas determinados arquivos que correspondam a padrões específicos. Os sinalizadores --exclude e --include permitem que você filtre arquivos com base em padrões e oferecem controle preciso sobre o que é copiado.

Apenas para preparar o cenário, esta é a estrutura de diretórios com a qual estou trabalhando:

Figura 14 - Estrutura do diretório

Figura 14 - Estrutura do diretório

Agora, digamos que você queira copiar todos os arquivos do diretório, exceto os arquivos .log:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*.log"

Esse comando copiará todos os arquivos do diretório advanced_folder para o S3, excluindo qualquer arquivo com a extensão .log:

Imagem 15 - Resultados da cópia da pasta

Imagem 15 - Resultados da cópia da pasta

Você também pode combinar vários padrões. Digamos que você queira copiar apenas os arquivos HTML e CSS da pasta do projeto:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*" --include "*.html" --include "*.css"

Esse comando primeiro exclui tudo (--exclude "*") e, em seguida, inclui apenas os arquivos com as extensões .html e .css. O resultado é o seguinte:

Imagem 16 - Resultados da cópia da pasta (2)

Imagem 16 - Resultados da cópia da pasta (2)

Lembre-se de que a ordem dos sinalizadores é importante - a CLI do AWS processa esses sinalizadores sequencialmente, portanto, se você colocar --include antes de --exclude, obterá resultados diferentes:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --include "*.html" --include "*.css" --exclude "*"

Dessa vez, nada foi copiado para o balde:

Imagem 17 - Resultados da cópia da pasta (3)

Imagem 17 - Resultados da cópia da pasta (3)

Especificando a classe de armazenamento S3

O Amazon S3 oferece diferentes classes de armazenamento, cada uma com diferentes custos e características de recuperação. Por padrão, o aws s3 cp faz upload de arquivos para a classe de armazenamento Standard, mas você pode especificar uma classe diferente usando o sinalizador --storage-class:

aws s3 cp /Users/dradecic/Desktop/large-archive.zip s3://testbucket-aws-cp-dradecic/archives/ --storage-class GLACIER

Esse comando faz upload de large-archive.zip para a classe de armazenamento Glacier, que é significativamente mais barata, mas tem custos de recuperação mais altos e tempos de recuperação mais longos:

Imagem 18 - Cópia de arquivos para o S3 com diferentes classes de armazenamento

Imagem 18 - Cópia de arquivos para o S3 com diferentes classes de armazenamento

As classes de armazenamento disponíveis incluem:

  • STANDARD (padrão): Armazenamento para fins gerais com alta durabilidade e disponibilidade.
  • REDUCED_REDUNDANCY (não é mais recomendado): Baixa durabilidade, opção de economia de custos, agora obsoleta.
  • STANDARD_IA (Acesso infrequente): Armazenamento de baixo custo para dados acessados com menos frequência.
  • ONEZONE_IA (Acesso infrequente de zona única): Armazenamento de acesso pouco frequente e de baixo custo em uma única zona de disponibilidade do AWS.
  • INTELLIGENT_TIERING: Mova automaticamente os dados entre os níveis de armazenamento com base nos padrões de acesso.
  • GLACIER: Armazenamento de arquivo de baixo custo para retenção de longo prazo, recuperação em minutos ou horas.
  • DEEP_ARCHIVE: Armazenamento de arquivo mais barato, recuperação em poucas horas, ideal para backup de longo prazo.

Se você estiver fazendo backup de arquivos aos quais não precisa de acesso imediato, usar GLACIER ou DEEP_ARCHIVE pode economizar custos significativos de armazenamento.

Sincronização de arquivos com o sinalizador --exact-timestamps

Quando você estiver atualizando arquivos no S3 que já existem, talvez queira copiar apenas os arquivos que foram alterados. O sinalizador --exact-timestamps ajuda com isso, comparando os registros de data e hora entre a origem e o destino.

Aqui está um exemplo:

aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exact-timestamps

Com esse sinalizador, o comando só copiará os arquivos se seus registros de data e hora forem diferentes dos arquivos já existentes no S3. Isso pode reduzir o tempo de transferência e o uso da largura de banda quando você atualiza regularmente um grande conjunto de arquivos.

Então, por que isso é útil? Imagine cenários de implementação em que você deseja atualizar os arquivos do aplicativo sem transferir desnecessariamente ativos inalterados.

Embora --exact-timestamps seja útil para executar algum tipo de sincronização, se você precisar de uma solução mais sofisticada, considere usar aws s3 sync em vez de aws s3 cp. O comando sync foi projetado especificamente para manter os diretórios sincronizados e tem recursos adicionais para essa finalidade. Escrevi tudo sobre o comando sync no tutorial AWS S3 Sync.

Com essas opções avançadas, agora você tem um controle muito mais preciso sobre as operações de arquivos S3. Você pode direcionar arquivos específicos, otimizar os custos de armazenamento e atualizar seus arquivos com eficiência. Na próxima seção, você aprenderá a automatizar essas operações usando scripts e tarefas agendadas.

Automatizando as transferências de arquivos com o AWS S3 cp

Até agora, você aprendeu a copiar manualmente arquivos de e para o S3 usando a linha de comando. Uma das maiores vantagens de usar o aws s3 cp é que você pode automatizar facilmente essas transferências, o que economizará muito tempo.

Vamos explorar como você pode integrar o comando aws s3 cp em scripts e trabalhos agendados para transferências de arquivos sem intervenção.

Usando o AWS S3 cp em scripts

Aqui está um exemplo simples de script bash que faz backup de um diretório no S3, adiciona um registro de data e hora ao backup e implementa o tratamento de erros e o registro em um arquivo:

#!/bin/bash

# Set variables
SOURCE_DIR="/Users/dradecic/Desktop/advanced_folder"
BUCKET="s3://testbucket-aws-cp-dradecic/backups"
DATE=$(date +%Y-%m-%d-%H-%M)
BACKUP_NAME="backup-$DATE"
LOG_FILE="/Users/dradecic/logs/s3-backup-$DATE.log"

# Ensure the logs directory exists
mkdir -p "$(dirname "$LOG_FILE")"

# Create the backup and log the output
echo "Starting backup of $SOURCE_DIR to $BUCKET/$BACKUP_NAME" | tee -a $LOG_FILE
aws s3 cp $SOURCE_DIR $BUCKET/$BACKUP_NAME --recursive 2>&1 | tee -a $LOG_FILE

# Check if the backup was successful
if [ $? -eq 0 ]; then
    echo "Backup completed successfully on $DATE" | tee -a $LOG_FILE
else
    echo "Backup failed on $DATE" | tee -a $LOG_FILE
fi

Salve-o como backup.sh, torne-o executável com chmod +x backup.sh e você terá um script de backup reutilizável!

Em seguida, você pode executá-lo com o seguinte comando:

./backup.sh

Imagem 19 - Script em execução no terminal

Imagem 19 - Script em execução no terminal

Imediatamente depois, a pasta backups no bucket será preenchida:

Imagem 20 - Backup armazenado no bucket S3

Imagem 20 - Backup armazenado no bucket S3

Vamos levar isso para o próximo nível, executando o script em uma programação.

Agendamento de transferências de arquivos com trabalhos cron

Agora que você tem um script, a próxima etapa é programá-lo para ser executado automaticamente em horários específicos.

Se você estiver no Linux ou no macOS, poderá usar o site cron para agendar seus backups. Veja como configurar um trabalho cron para executar o script de backup todos os dias à meia-noite:

1. Abra seu crontab para edição:

crontab -e

2. Adicione a seguinte linha para executar seu script diariamente à meia-noite:

0 0 * * * /path/to/your/backup.sh

Imagem 21 - Trabalho Cron para executar o script diariamente

O formato dos trabalhos cron é minute hour day-of-month month day-of-week command. Aqui estão mais alguns exemplos:

  • Funciona a cada hora: 0 * * * * /path/to/your/backup.sh
  • Você pode participar todas as segundas-feiras às 9 horas: 0 9 * * 1 /path/to/your/backup.sh
  • Você pode participar no dia 1º de cada mês: 0 0 1 * * /path/to/your/backup.sh

E é isso! O script backup.sh agora será executado no intervalo programado.

Automatizar as transferências de arquivos do S3 é um caminho a seguir. É especialmente útil para cenários como:

  • Backups diários de dados importantes
  • Sincronização de imagens de produtos em um site
  • Mover arquivos de registro para armazenamento de longo prazo
  • Implementação de arquivos de site atualizados

Técnicas de automação como essas ajudarão você a configurar um sistema confiável que lida com transferências de arquivos sem intervenção manual. Você só precisa escrevê-la uma vez e depois pode esquecê-la.

Na próxima seção, abordarei algumas práticas recomendadas para tornar suas operações em aws s3 cp mais seguras e eficientes.

Práticas recomendadas para usar o AWS S3 cp

Embora o comando aws s3 cp seja fácil de usar, as coisas podem dar errado.

Se você seguir as práticas recomendadas, evitará as armadilhas comuns, otimizará o desempenho e manterá seus dados seguros. Vamos explorar essas práticas para tornar suas operações de transferência de arquivos mais eficientes.

Gerenciamento eficiente de arquivos

Ao trabalhar com o S3, organizar seus arquivos de forma lógica poupará tempo e dores de cabeça no futuro.

Primeiro, estabeleça uma convenção consistente de nomenclatura de bucket e prefixo. Por exemplo, você pode separar seus dados por ambiente, aplicativo ou data:

s3://company-backups/production/database/2023-03-13/
s3://company-backups/staging/uploads/2023-03/

Esse tipo de organização facilita para você:

  • Localize arquivos específicos quando você precisar deles.
  • Aplique políticas e permissões de balde no nível certo.
  • Configure regras de ciclo de vida para arquivar ou excluir dados antigos.

Outra dica: Ao transferir grandes conjuntos de arquivos, considere agrupar os arquivos pequenos primeiro (usando zip ou tar) antes de fazer o upload. Isso reduz o número de chamadas de API para o S3, o que pode reduzir os custos e acelerar as transferências.

# Instead of copying thousands of small log files
# tar them first, then upload
tar -czf example-logs-2025-03.tar.gz /var/log/application/
aws s3 cp example-logs-2025-03.tar.gz s3://testbucket-aws-cp-dradecic/logs/2025/03/

Manuseio de grandes transferências de dados

Quando você estiver copiando arquivos grandes ou muitos arquivos de uma vez, há algumas técnicas para tornar o processo mais confiável e eficiente.

Você pode usar o sinalizador --quiet para reduzir a saída ao executar em scripts:

aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/backups/ --recursive --quiet

Isso suprime as informações de progresso de cada arquivo, o que torna os registros mais gerenciáveis. Isso também melhora um pouco o desempenho.

Para arquivos muito grandes, considere o uso de uploads de várias partes com o sinalizador --multipart-threshold:

aws s3 cp huge-file.iso s3://testbucket-aws-cp-dradecic/backups/ --multipart-threshold 100MB

A configuração acima diz à CLI do AWS para dividir arquivos maiores que 100 MB em várias partes para upload. Isso traz alguns benefícios:

  • Se a conexão cair, somente a parte afetada precisará ser tentada novamente.
  • As peças podem ser carregadas em paralelo, aumentando potencialmente o rendimento.
  • Você pode pausar e retomar uploads grandes.

Quando você transferir dados entre regiõesconsidere usar o S3 Transfer Acceleration para fazer uploads mais rápidos:

aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com

A opção acima encaminha sua transferência por meio da rede de borda da Amazon, o que pode acelerar significativamente as transferências entre regiões.

Garantia de segurança

A segurança deve ser sempre uma prioridade máxima quando você trabalha com seus dados na nuvem.

Primeiro, verifique se as permissões do IAM seguem o princípio do menor privilégio. Conceda apenas as permissões específicas necessárias para cada tarefa.

Aqui está um exemplo de política que você pode atribuir ao usuário:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::testbucket-aws-cp-dradecic/backups/*"
        }
    ]
}

Essa política permite copiar arquivos de e para apenas o prefixo "backups" em "my-bucket".

Uma maneira adicional de aumentar a segurança é ativar a criptografia para dados confidenciais. Você pode especificar a criptografia no lado do servidor ao fazer o upload:

aws s3 cp confidential.docx s3://testbucket-aws-cp-dradecic/ --sse AES256

Ou, para maior segurança, use o AWS Key Management Service (KMS):

aws s3 cp secret-data.json s3://testbucket-aws-cp-dradecic/ --sse aws:kms --sse-kms-key-id myKMSKeyId

No entanto, para operações altamente confidenciais, considere o uso de endpoints de VPC para o S3. Isso mantém seu tráfego dentro da rede da AWS e evita totalmente a Internet pública.

Na próxima seção, você aprenderá a solucionar problemas comuns que poderá encontrar ao trabalhar com esse comando.

Solução de problemas de erros de cp do AWS S3

Uma coisa é certa: você ocasionalmente terá problemas ao trabalhar com aws s3 cp. Mas, ao entender os erros comuns e suas soluções, você economizará tempo e frustração quando as coisas não saírem como planejado.

Nesta seção, mostrarei a você os problemas mais frequentes e como corrigi-los.

Erros comuns e correções

Erro: "Acesso negado"

Esse é provavelmente o erro mais comum que você encontrará:

upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

Isso geralmente significa uma de três coisas:

  • Seu usuário IAM não tem permissões suficientes para realizar a operação.
  • A política de balde está restringindo o acesso.
  • Suas credenciais do AWS expiraram.

Para solucionar problemas:

  • Verifique suas permissões de IAM para garantir que você tenha as permissões necessárias s3:PutObject (para uploads) ou s3:GetObject (para downloads).
  • Verifique se a política de bucket não está restringindo suas ações.
  • Execute aws configure para atualizar suas credenciais se elas tiverem expirado.

Erro: "Não existe tal arquivo ou diretório"

Esse erro ocorre quando o arquivo ou diretório local que você está tentando copiar não existe:

upload failed: ./missing-file.txt to s3://testbucket-aws-cp-dradecic/missing-file.txt An error occurred (404) when calling the PutObject operation: Not Found

A solução é simples: verifique cuidadosamente os caminhos dos arquivos. Os caminhos diferenciam maiúsculas de minúsculas, portanto, tenha isso em mente. Além disso, verifique se você está no diretório correto ao usar caminhos relativos.

Erro: "O intervalo especificado não existe"

Se você vir esse erro:

upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist

Verifique se você tem:

  • Erros de digitação no nome do seu balde.
  • Se você está usando a região correta do AWS.
  • Se o bucket realmente existir (ele pode ter sido excluído).

Você pode listar todos os seus buckets com aws s3 ls para confirmar o nome correto.

Erro: "Connection timed out"

Problemas de rede podem causar tempos limite de conexão:

upload failed: ./largefile.zip to s3://testbucket-aws-cp-dradecic/largefile.zip An error occurred (RequestTimeout) when calling the PutObject operation: Request timeout

Para resolver isso:

  • Verifique sua conexão com a Internet.
  • Tente usar arquivos menores ou ativar uploads de várias partes para arquivos grandes.
  • Considere o uso do AWS Transfer Acceleration para melhorar o desempenho.

Tratamento de falhas de upload

É muito mais provável que ocorram erros durante a transferência de arquivos grandes. Quando esse for o caso, tente lidar com as falhas de forma graciosa.

Por exemplo, você pode usar o sinalizador --only-show-errors para facilitar o diagnóstico de erros em scripts:

aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/ --recursive --only-show-errors

Isso suprime as mensagens de transferências bem-sucedidas, mostrando apenas os erros, o que facilita muito a solução de problemas de transferências grandes.

Para lidar com transferências interrompidas, o comando --recursive ignorará automaticamente os arquivos que já existem no destino com o mesmo tamanho. No entanto, para ser mais minucioso, você pode usar as novas tentativas integradas da CLI do AWS para problemas de rede, definindo essas variáveis de ambiente:

export AWS_RETRY_MODE=standard
export AWS_MAX_ATTEMPTS=5
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/

Isso instrui a CLI do AWS a repetir automaticamente as operações com falha até 5 vezes.

Porém, para conjuntos de dados muito grandes, considere usar aws s3 sync em vez de cp, pois ele foi projetado para lidar melhor com as interrupções:

aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/

O comando sync só transferirá arquivos diferentes dos que já estão no destino, o que o torna perfeito para retomar transferências grandes interrompidas.

Se você entender esses erros comuns e implementar o tratamento adequado de erros em seus scripts, tornará suas operações de cópia do S3 muito mais robustas e confiáveis.

Resumindo o AWS S3 cp

Para concluir, o comando aws s3 cp é uma ferramenta completa para copiar arquivos locais para o S3 e vice-versa.

Você aprendeu tudo sobre isso neste artigo. Você começou com os fundamentos e a configuração do ambiente e acabou escrevendo scripts programados e automatizados para copiar arquivos. Você também aprendeu a lidar com alguns erros e desafios comuns ao mover arquivos, especialmente os grandes.

Portanto, se você for um desenvolvedor, profissional de dados ou administrador de sistemas, acho que esse comando será útil. A melhor maneira de você se sentir confortável com ele é usá-lo regularmente. Certifique-se de que você entenda os fundamentos e, em seguida, passe algum tempo automatizando partes tediosas do seu trabalho.

Para saber mais sobre a AWS, siga estes cursos da DataCamp:

Você pode até mesmo usar a DataCamp para se preparar para os exames de certificação da AWS - AWS Cloud Practitioner (CLF-C02).

Perguntas frequentes

O que é o comando aws s3 cp e para que ele pode ser usado?

O comando aws s3 cp é um utilitário da interface de linha de comando do AWS que permite que você copie arquivos entre o sistema local e o armazenamento do Amazon S3. Ele foi projetado para oferecer uma experiência familiar de linha de comando semelhante ao comando cp padrão do Linux, mas adaptado para interagir com os buckets do S3. Você pode usá-lo para transferências bidirecionais, cópia recursiva de estruturas de diretórios inteiras, filtragem de arquivos com base em padrões e até mesmo especificação de diferentes classes de armazenamento para otimização de custos. Ele é particularmente útil para engenheiros de DevOps, cientistas de dados e administradores de sistemas que precisam gerenciar dados em buckets S3 com eficiência.

Como faço para configurar a CLI do AWS para usar o comando aws s3 cp?

A configuração da CLI do AWS para usar o comando aws s3 cp envolve a instalação da CLI do AWS em seu sistema, a configuração com suas credenciais do AWS e a criação de um bucket do S3. O processo de instalação varia um pouco, dependendo do seu sistema operacional (Windows, Linux ou macOS). Após a instalação, você precisará executar o comando aws configure e fornecer o ID da chave de acesso, a chave de acesso secreta, a região padrão e o formato de saída preferido. Por fim, você precisará criar um bucket S3 por meio do Console de gerenciamento do AWS ou usando diretamente a CLI do AWS.

Quais são a sintaxe básica e os casos de uso comuns do aws s3 cp?

A sintaxe básica do aws s3 cp é aws s3 cp [options], em que a origem e o destino podem ser caminhos de arquivos locais ou URIs do S3 (começando com s3://). Os casos de uso comuns incluem o upload de um arquivo do seu sistema local para o S3, o download de um arquivo do S3 para o seu sistema local e a cópia de diretórios inteiros recursivamente usando o sinalizador --recursive. Você também pode usar o comando para copiar arquivos entre diferentes compartimentos do S3, especificar nomes diferentes para os arquivos de destino e organizar arquivos em estruturas de "pastas" aninhadas nos compartimentos.

Como posso usar os sinalizadores --exclude e --include para filtrar arquivos específicos?

Os sinalizadores --exclude e --include permitem que você filtre arquivos com base em padrões ao usar o aws s3 cp, fornecendo controle preciso sobre o que é copiado. Por exemplo, você pode copiar todos os arquivos de um diretório, exceto aqueles com extensões específicas (como --exclude "*.log"), ou pode direcionar apenas tipos de arquivos específicos (como --include "*.html" --include "*.css" após excluir primeiro tudo com --exclude "*"). A ordem desses sinalizadores é muito importante, pois a CLI do AWS os processa sequencialmente. Isso possibilita a criação de regras de filtragem sofisticadas para cenários complexos de transferência de arquivos.

Qual é a diferença entre o aws s3 cp com --exact-timestamps e o aws s3 sync?

Embora ambos os comandos possam ser usados para atualizar arquivos no S3, eles têm propósitos e comportamentos diferentes. O comando aws s3 cp com o sinalizador --exact-timestamps copiará os arquivos somente se os registros de data e hora forem diferentes dos que já estão no S3, o que pode reduzir o tempo de transferência e o uso de largura de banda ao atualizar arquivos. No entanto, o aws s3 sync foi projetado especificamente para manter os diretórios sincronizados e oferece recursos de sincronização mais sofisticados. Se você precisar atualizar regularmente grandes conjuntos de arquivos e quiser transferir apenas o que foi alterado, o aws s3 sync geralmente é a melhor opção, embora o aws s3 cp com --exact-timestamps possa funcionar para necessidades de sincronização mais simples.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Cientista de dados sênior baseado na Croácia. Principal redator técnico com mais de 700 artigos publicados, gerando mais de 10 milhões de visualizações. Autor do livro Automação do aprendizado de máquina com TPOT.
Temas

Saiba mais sobre a AWS com estes cursos!

Certificação disponível

Curso

Conceitos da AWS

2 hr
22.9K
Descubra o mundo da Amazon Web Services (AWS) e entenda por que ela está na vanguarda da computação em nuvem.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

AWS Certified Cloud Practitioner: um guia completo

Saiba mais sobre a certificação e o exame AWS Certified Cloud Practitioner com nosso guia completo. Descubra dicas, recursos e estratégias para garantir que você tenha sucesso.
Srujana Maddula's photo

Srujana Maddula

13 min

Tutorial

Tutorial de armazenamento do AWS: Uma introdução prática ao S3 e ao EFS

O guia completo para armazenamento de arquivos no AWS com S3 e EFS.
Zoumana Keita 's photo

Zoumana Keita

14 min

Tutorial

Primeiros passos com o AWS Athena: Um guia prático para iniciantes

Este guia prático ajudará você a começar a usar o AWS Athena. Explore sua arquitetura e seus recursos e saiba como consultar dados no Amazon S3 usando SQL.
Tim Lu's photo

Tim Lu

15 min

Tutorial

Um guia completo para armazenamento de dados no AWS com o Redshift

Este guia do AWS Redshift abrange a configuração e o gerenciamento de um data warehouse na nuvem, o carregamento de dados, a execução de consultas complexas, a otimização do desempenho, a integração com ferramentas de BI e fornece práticas recomendadas e dicas de solução de problemas para que você tenha sucesso.
Zoumana Keita 's photo

Zoumana Keita

15 min

Tutorial

O guia completo para machine learning na AWS com o Amazon SageMaker

Este tutorial abrangente ensina você a usar o AWS SageMaker para criar, treinar e implantar modelos de machine learning. Nós guiamos você por todo o fluxo de trabalho, desde a configuração do seu ambiente AWS e a criação de uma instância de notebook do SageMaker até a preparação de dados, modelos de treinamento e sua implementação como endpoints.
Bex Tuychiev's photo

Bex Tuychiev

15 min

Tutorial

Tutorial de push e pull do GIT

Saiba como realizar solicitações Git PUSH e PULL por meio do GitHub Desktop e da linha de comando.

Olivia Smith

13 min

Ver maisVer mais