S3cmd — это клиент S3 API с интерфейсом командной строки, используемый для работы с S3-совместимыми хранилищами.
Для установки S3cmd в операционной системе Ubuntu используйте команду:
sudo apt install s3cmd -y
Для настройки S3cmd
для работы с нашим объектным хранилищем S3 необходимо создать в корне домашней директории файл .s3cfg
со следующим содержимым:
[default]
access_key = <Access Key>
secret_key = <Secret Access Key>
bucket_location = ru-1
host_base = s3.timeweb.com
host_bucket = s3.timeweb.com
use_https = True
В качестве хоста для host_base и host_bucket можно использовать s3.timeweb.com или s3.timeweb.cloud в зависимости от кластера S3. Проверить, какой эндпоинт используется для вашего бакета, можно в панели управления в разделе «Настройки», в блоке «Параметры S3» или на вкладке «Дашборд». Там же можно найти значения S3 Access Key и S3 Secret Access Key.
Чтобы получить список файлов, используйте ls
:
s3cmd ls s3://<имя бакета>
Для загрузки файлов используется put
. В примере ниже загружается файл text.txt:
s3cmd put test.txt s3://<имя бакета>
Клиент s3cmd
поддерживает составную загрузку, которая автоматически активируется при загрузке файлов размером более 15 Мб. Этот метод разбивает файл на несколько частей (чанков) и загружает их параллельно, что ускоряет процесс передачи больших файлов и повышает устойчивость к сбоям.
При необходимости составную загрузку можно отключить с помощью опции --disable-multipart
.
Для изменения размера отдельных фрагментов (чанков) используйте опцию --multipart-chunk-size-mb=SIZE
, где SIZE — размер каждого фрагмента в мегабайтах. По умолчанию размер фрагмента составляет 15 Мб, минимально допустимый размер — 5 Мб, максимально допустимый — 5 Гб.
Например, чтобы установить размер фрагмента на 10 Мб, используйте следующую команду:
s3cmd put <имя_файла> --multipart-chunk-size-mb=10 s3://<имя_бакета>
Эта настройка позволяет оптимизировать загрузку больших файлов в зависимости от пропускной способности сети и требований к производительности.
Для удаления файла используйте команду del
. В примере ниже удаляем файл text.txt:
s3cmd del s3://<имя бакета>/test.txt
При прерывании составной загрузки фрагменты файлов не отображаются в бакете, но продолжают занимать дисковое пространство на сервере. Чтобы просмотреть список прерванных загрузок и узнать, какие фрагменты занимают место, используйте команду:
s3cmd multipart s3://<имя_бакета>
Эта команда выводит дату и время начала загрузки, путь файла и уникальный идентификатор загрузки (ID
).
Для удаления фрагментов неудачных загрузок используйте следующую команду:
s3cmd abortmp s3://<имя_бакета>/<имя_файла> <ID_загрузки>
Для загрузки файла из бакета на локальное устройство используйте get
:
s3cmd get s3://<имя бакета>/test.txt
Для синхронизации файлов между локальной директорией (в примере это текущая директория — .
) и бакетом используется sync
:
s3cmd sync . s3://<имя бакета>
Полный список команд и дополнительную информацию можно найти в документации S3cmd.