# S3cmd

S3cmd — это консольный клиент (Linux, Mac) для работы с Amazon S3-совместимыми хранилищами.

Подробности о работе c s3cmd см. [в документации s3cmd](https://s3tools.org/s3cmd-howto).

## Подготовительные шаги

- [Создайте аккаунт S3 и ключ доступа](../storage-s3.md#создать-аккаунт). Сохраните ключ **secret**.
- Установите [S3cmd](https://s3tools.org/download).

## Настроить подключение

Перед настройкой подключения [создайте аккаунт и ключ доступа](../storage-s3.md#создать-аккаунт).

Настроить подключение к хранилищу можно одним из способов:
- **1 способ**: установить значения переменных и подключиться к хранилищу;
- **2 способ**: настроить подключение с помощью стандартной команды s3cmd `s3cmd --configure`.

::: tabs

== 1 способ
1. Установите значения переменных:

   ```sh
   S3_ACCESS_KEY=...
   S3_SECRET_KEY=...
   S3_URL=...
   ```
   где:
   - `S3_ACCESS_KEY`: введите *Access key*, полученный при [создании хранилища в консоли управления](../storage-s3.md#создать-аккаунт).
   - `S3_SECRET_KEY`: введите ключ *secret*, полученный при [создании хранилища в консоли управления](../storage-s3.md#создать-аккаунт).
   - `S3_URL`: имя хоста для подключения соответствует [региону](../../storage-overview.md#регионы-и-зоны-доступности).

2. Подключите хранилище:

   ```sh
   s3cmd --ssl --access_key="${S3_ACCESS_KEY}" --secret_key="${S3_SECRET_KEY}" --host="${S3_URL}" --region=US --no-progress --host-bucket="%(bucket)"  --dump-config > ~/.s3cfg
   ```

== 2 способ
1. Выполните команду в терминале:

   ```sh
   s3cmd --configure 
   ```
2. Укажите значения для следующих параметров:
   - `Access Key`: введите *Access key*, полученный при [создании хранилища в консоли управления](../storage-s3.md#создать-аккаунт).
   - `Secret Key`: введите ключ *secret*, полученный при [создании хранилища в консоли управления](../storage-s3.md#создать-аккаунт)
   - .
   - `S3 Endpoint`: имя хоста для подключения соответствует [региону](../../storage-overview.md#регионы-и-зоны-доступности).
   - `DNS-style bucket+hostname:port template for accessing a bucket`: введите `%(bucket)`.
   - `Use HTTPS protocol`: введите `Y`.
3. Остальные настройки оставьте без изменений.
4. Устанавливается соединение. В случае успеха, отобразится `Success. Your access key and secret key worked fine :-)`.
5. Сохраните конфигурацию: `Save settings? [y/N]`: введите `Y`

:::

S3cmd сохранит настройки в файле `~/.s3cfg`, его можно изменить вручную.

::: warning Важно
Если при установке соединения с хранилищем возникла ошибка валидности SSL-сертификатов, то выполните команду в терминале для добавления корневого сертификата: 

```sh
echo 'alias s3cmd="s3cmd --ca-certs /etc/ssl/certs/ca-certificates.crt"' >>  ~/.profile
```
Выполните настройку подключения к хранилищу снова.
:::

## Проверить подключение к хранилищу

Выполните команду в терминале:

```sh
s3cmd ls 
```
В выводе должен отобразиться список доступных бакетов. Список может быть пустым, если в хранилище не создано ни одного бакета.

## Примеры команд

- `s3cmd --help` - справка.
- `s3cmd mb s3://<имя_бакета>` - создание бакета.
- `s3cmd ls s3://<имя_бакета>` - получение списка бакетов.

Подробности о работе c s3cmd см. [в документации s3cmd](https://s3tools.org/usage).