Header Ads

Como sincronizar arquivos do Linux com o Amazon S3

AWS S3 é o serviço de armazenamento em nuvem da Amazon, permitindo que você armazene arquivos individuais como objetos em um bucket. Você pode fazer upload de arquivos da linha de comando em seu servidor Linux ou até mesmo sincronizar diretórios inteiros com o S3.

Se você deseja apenas compartilhar arquivos entre instâncias EC2, você pode usar um volume EFS e montá-lo diretamente em vários servidores, eliminando a “ nuvem ” completamente. Mas você não deve usá-lo para tudo, porque é muito mais caro do que o S3, mesmo com o acesso infrequente ativado.

Limite o acesso S3 a um usuário IAM

Seu servidor provavelmente não precisa de acesso root completo à sua conta AWS, portanto, antes de fazer qualquer tipo de sincronização de arquivos, você deve criar um novo usuário IAM para o seu servidor usar. Com um usuário IAM, você pode limitar seu servidor para gerenciar apenas seus buckets S3.

No console de gerenciamento IAM, crie um novo usuário e ative o “ Acesso programático. ”

Você será solicitado a escolher as permissões para este usuário. Crie um novo grupo e atribua a ele o “ AmazonS3FullAccess ” permissão.

Publicidade

Depois disso, você receberá uma chave de acesso e uma chave secreta. Anote isso; você precisará deles para autenticar seu servidor.

Você também pode atribuir manualmente permissões S3 mais detalhadas, como permissão para usar um depósito específico ou apenas para fazer upload de arquivos, mas limitar o acesso apenas a S3 deve funcionar na maioria dos casos.

Sincronizando arquivo com s3cmd

s3cmd é um utilitário projetado para facilitar o trabalho com o S3 na linha de comando. Ele não faz parte do AWS CLI, então você terá que instalá-lo manualmente a partir do gerenciador de pacotes da sua distro. Para sistemas baseados em Debian como o Ubuntu, isso seria:

 sudo apt-get install s3cmd 

Depois que o s3cmd for instalado, você precisará vinculá-lo ao usuário IAM que você criou para gerenciar o S3. Execute a configuração com:

 s3cmd --configure 

Você será solicitado a fornecer a chave de acesso e a chave secreta que o console de gerenciamento IAM forneceu. Cole-os aqui. Existem mais algumas opções, como alterar os pontos de extremidade para S3 ou habilitar a criptografia, mas você pode deixar todos eles como padrão e apenas selecionar “ Y ” no final para salvar a configuração.

Para fazer upload de um arquivo, use:

 s3cmd colocar arquivo s3: // intervalo 

Substituindo o “ bucket ” com o nome do seu intervalo. Para recuperar esses arquivos, execute:

 s3cmd obter s3: // bucket / remotefile localfile 

Publicidade

E, se quiser sincronizar em um diretório inteiro, execute:

 diretório de sincronização s3cmd s3: // bucket / 

Isso copiará todo o diretório em uma pasta no S3. Na próxima vez que você executá-lo, ele copiará apenas os arquivos que foram alterados desde a última execução. Ele não excluirá nenhum arquivo, a menos que você o execute com a opção --delete-removed.

s3cmd sync não será executado automaticamente, então se você deseja manter este diretório atualizado regularmente, você precisará executar este comando regularmente. Você pode automatizar isso com o cron; Abra seu crontab com crontab -e e adicione este comando para encerrar:

 0 0 * * * diretório de sincronização s3cmd s3: // bucket > / dev / null 2 ​​> & 1 

Isso sincronizará o “ diretório ” para “ bucket ” uma vez por dia. A propósito, se o crontab -e travou você no vim, você pode alterar o editor de texto padrão com export VISUAL = nano; ou o que preferir.

s3cmd tem muitos subcomandos; você pode copiar entre baldes com cp, mover arquivos com mv e até mesmo criar e remover baldes da linha de comando com mb e rb, respectivamente. Use s3cmd -h para uma lista completa.

Outra opção: AWS CLI

Além do s3cmd, existem algumas outras opções de linha de comando para sincronizar arquivos com o S3. AWS fornece suas próprias ferramentas com o AWS CLI. Você precisará do Python 3+ e pode instalar a CLI do pip3 com:

 pip3 install awscli --upgrade --user 

Publicidade

Isso instalará o comando aws, que você pode usar para interagir com os serviços da AWS. Você precisará configurá-lo da mesma maneira que s3cmd, o que pode ser feito com:

 aws configure 

Você será solicitado a inserir a chave de acesso e a chave secreta do seu usuário IAM.

A sintaxe do AWS CLI é semelhante ao s3cmd. Para fazer upload de um arquivo, use:

 aws s3 cp file s3: // bucket 

Para sincronizar uma pasta inteira, use:

 pasta de sincronização aws s3 s3: // intervalo 

Você pode copiar e até sincronizar entre os depósitos com os mesmos comandos. Você pode usar a ajuda do aws para obter uma lista de comandos completa ou ler a referência de comando em seu site.

Backups completos: Restic, duplicidade

Se você deseja fazer backups grandes, pode usar outra ferramenta em vez de um simples utilitário de sincronização. Quando você sincroniza com o S3 com s3cmd ou o AWS CLI, qualquer alteração feita sobrescreverá os arquivos atuais. Como a principal preocupação com o armazenamento de arquivos na nuvem geralmente não é a falha, mas a exclusão acidental sem acesso ao histórico de revisão, isso é um problema.

A AWS oferece suporte ao controle de versão de arquivo, o que resolve esse problema de alguma forma, mas você ainda pode querer usar um programa de backup mais poderoso para lidar com isso sozinho, especialmente se estiver trabalhando de forma completa -drive backups.

Publicidade

Duplicity é um utilitário simples que faz backup de arquivos na forma de volumes TAR criptografados. O primeiro arquivo é um backup completo e, em seguida, todos os arquivos subsequentes são incrementais, armazenando apenas as alterações feitas desde o último arquivo.

Isso é muito eficiente, mas restaurar de um backup é menos eficiente, pois o processo de restauração terá que seguir a cadeia de mudanças para chegar ao estado final dos dados. O Restic resolve esse problema armazenando dados em blocos criptografados desduplicados e mantém um instantâneo de cada versão para restauração. Dessa forma, o estado atual dos arquivos pode ser facilmente referenciado e cada revisão ainda está acessível.

Ambas as ferramentas podem ser configuradas para funcionar com AWS S3, bem como vários outros provedores de armazenamento. Como alternativa, se você deseja apenas fazer backup de instâncias EC2 baseadas em EBS, pode usar snapshots EBS incrementais, embora seja mais caro do que fazer backup manualmente no S3.

Nenhum comentário