O S3cmd é um cliente da API S3 com interface de linha de comando, usado para interagir com armazenamentos compatíveis com S3.
Para instalar o S3cmd, use os seguintes comandos.
sudo apt install s3cmd -y
sudo dnf install s3cmd -y
sudo pacman -S s3cmd
brew install s3cmd
choco install s3cmd -y
Certifique-se de executar o PowerShell como administrador.
Para configurar o S3cmd para funcionar com nosso armazenamento de objetos S3, você precisa criar um arquivo .s3cfg no seu diretório home com o seguinte conteúdo:
[default]
access_key = <Access Key>
secret_key = <Secret Access Key>
bucket_location = us-2
host_base = s3.hmstorage.net
host_bucket = s3.hmstorage.net
use_https = True
Você pode encontrar a Access Key e a Secret Access Key nas configurações do bucket, em Configurações → Parâmetros do S3.

Para listar os arquivos em um bucket, use o comando ls:
s3cmd ls s3://<bucket_name>
Para enviar arquivos, use o comando put. No exemplo abaixo, o arquivo test.txt é enviado:
s3cmd put test.txt s3://<bucket_name>
O cliente S3cmd oferece suporte a upload multipart, que é ativado automaticamente para arquivos maiores que 15 MB. Esse método divide o arquivo em várias partes (chunks) e as envia em paralelo, acelerando a transferência de arquivos grandes e aumentando a tolerância a falhas.
Se necessário, o upload multipart pode ser desativado com a opção --disable-multipart.
Para alterar o tamanho de cada parte, use a opção --multipart-chunk-size-mb=SIZE, em que SIZE é o tamanho de cada parte em megabytes. Por padrão, o tamanho é 15 MB, com mínimo permitido de 5 MB e máximo de 5 GB.
Por exemplo, para definir o tamanho da parte como 10 MB, use o seguinte comando:
s3cmd put <file_name> --multipart-chunk-size-mb=10 s3://<bucket_name>
Essa configuração permite otimizar o upload de arquivos grandes de acordo com a largura de banda da rede e os requisitos de desempenho.
Se um upload multipart for interrompido, os fragmentos do arquivo não aparecem no bucket, mas continuam ocupando espaço em disco no servidor. Para ver a lista de uploads interrompidos e identificar quais fragmentos estão consumindo espaço, use o seguinte comando:
s3cmd multipart s3://<bucket_name>
Esse comando mostra a data e hora de início do upload, o caminho do arquivo e um identificador único de upload (ID).
Para excluir fragmentos de uploads com falha, use o comando:
s3cmd abortmp s3://<bucket_name>/<file_name> <upload_ID>
Para baixar um arquivo de um bucket para o seu dispositivo local, use get:
s3cmd get s3://<bucket_name>/test.txt
Para excluir um arquivo, use o comando del. No exemplo abaixo, excluímos o arquivo test.txt:
s3cmd del s3://<bucket_name>/test.txt
Para sincronizar arquivos entre um diretório local (neste exemplo, o diretório atual: .) e um bucket, use sync:
s3cmd sync . s3://<bucket_name>
Para ver a lista completa de comandos e informações adicionais, consulte a documentação do S3cmd.