prefixload 0.12.3

S3 cli backup by file name prefix
Documentation
[![crates.io](https://img.shields.io/crates/v/prefixload.svg)](https://crates.io/crates/prefixload)

**🇷🇺 Русский | [🇺🇸 English](README.md)**

# Prefixload

Prefixload — это небольшая утилита командной строки, написанная на Rust, которая периодически загружает файлы из локального каталога в бакет Amazon S3 или S3-совместимого хранилища. Она выбирает файлы для загрузки на основе настраиваемых префиксов имён файлов.

Этот инструмент полезен для автоматизации резервного копирования, где файлы организованы и именуются с использованием постоянных префиксов (например, `db_backup_2025-09-21.sql`, `logs_myapp_2025-09-21.tar.gz`).

## Возможности

*   **Правила на основе префиксов**: Настраивайте правила в YAML-файле для сопоставления префиксов файлов с определёнными удалёнными каталогами в вашем S3-бакете.
*   **Совместимость с S3**: Работает как с AWS S3, так и с другими S3-совместимыми сервисами, такими как MinIO, Ceph или Wasabi.
*   **Эффективная синхронизация**: Использует ETag'и S3 для проверки, был ли файл уже синхронизирован, избегая ненужных повторных загрузок.
*   **Многосоставные загрузки**: Автоматически обрабатывает большие файлы, используя многосоставные загрузки.
*   **Безопасное хранение учётных данных**: Команда `login` помогает безопасно сохранять ваши учётные данные AWS.

## Установка

Вы можете установить Prefixload напрямую с crates.io с помощью Cargo:

```sh
cargo install prefixload
```

## Использование

Инструмент требует однократной настройки учётных данных и конфигурации.

### 1. Вход в систему

Сначала настройте ваши учётные данные AWS. Инструмент запросит у вас ID ключа доступа (Access Key ID) и секретный ключ доступа (Secret Access Key) и сохранит их в стандартный файл `~/.aws/credentials`.

```sh
prefixload login
```

### 2. Настройка

Далее настройте правила резервного копирования. Конфигурация хранится в YAML-файле. Чтобы открыть его в вашем редакторе по умолчанию, выполните:

```sh
prefixload config edit
```

Это откроет файл конфигурации, где вы можете определить эндпоинт S3, бакет и правила сопоставления префиксов.

### 3. Запуск резервного копирования

Чтобы выполнить однократное резервное копирование на основе вашей конфигурации, используйте команду `run`:

```sh
prefixload run
```

Вы можете запустить его в "тихом" режиме, чтобы подавить вывод и вместо этого записывать лог в файл:
```sh
prefixload run --quiet
```

## Конфигурация

Файл конфигурации находится по пути `~/.config/prefixload/config.yml` (в Linux/macOS) или `%APPDATA%\prefixload\config.yml` (в Windows).

Вот пример файла `config.yml`:

```yaml
# URL-адрес эндпоинта вашего S3-совместимого хранилища
endpoint: "https://s3.example.com"

# Имя вашего S3-бакета для загрузки файлов
bucket: "my-backup-bucket"

# Регион AWS. Требуется SDK.
region: "us-east-1"

# Установите `true` для S3-совместимых сервисов, требующих адресации в стиле пути (например, MinIO).
force_path_style: false

# Размер части загрузки в байтах для многосоставных загрузок (например, 15 МБ).
part_size: 15728640

# Путь к локальному каталогу, где хранятся ваши файлы.
local_directory_path: "/var/backups"

# Правила сопоставления для загрузки файлов.
directory_struct:
  # Файлы, начинающиеся с "db_backup_", будут загружены в каталог "database/" в бакете.
  - local_name_prefix: "db_backup_"
    remote_path: "database/"

  # Файлы, начинающиеся с "app_logs_", будут загружены в каталог "application_logs/".
  - local_name_prefix: "app_logs_"
    remote_path: "application_logs/"
```