# Audion Disk Tools

[English](README_EN.md) · [Руководство](USER_GUIDE_RU.md) · [Справочник команд](COMMAND_REFERENCE_RU.md)

**Содержание**

- [Зачем это сделано](#зачем-это-сделано)
- [Принципы](#принципы)
- [Что умеет](#что-умеет)
- [Дальше](#дальше)
- [Техническая часть](#техническая-часть)
  - [Запуск](#запуск)
  - [Режимы и с чего начинать](#режимы-и-с-чего-начинать)
  - [Что где лежит](#что-где-лежит)
  - [Границы файлового движка](#границы-файлового-движка)
  - [Названия в рабочей области](#названия-в-рабочей-области)

Портативный набор для работы с дисками и файлами в Windows: сверить, обновить,
зеркалировать, отфильтровать по типам, упаковать, передать по сети или в облако.

## Зачем это сделано

Синхронизация файлов — задача, где ошибка обходится дороже всего остального.
Программа, которая «просто копирует», однажды удаляет то, чего в источнике уже
нет, — и выясняется это, когда источник тоже потерян. Программа, которая
«умно решает», делает это молча.

Здесь всё наоборот: **направление, удаление и способ сравнения объявлены явно**,
а перед любой серьёзной операцией есть шаг, который ничего не меняет.

Лестница безопасности, по которой идут:

```
1. сравнить            что вообще различается — без записи на диск
2. предпросмотр        что именно будет скопировано, обновлено, удалено
3. запуск              то, что показал предпросмотр
```

Для повседневного зеркалирования держат безопасный способ сравнения; строгий
включают, когда важны файлы одного размера с одинаковым временем.

## Принципы

**Никаких двух фиксированных папок.** Источник и назначение выбираются
произвольно: внешний диск, сетевой путь, большой каталог. Терабайты не копируются
внутрь проекта, чтобы с ними поработать.

**Способ сравнения назван вслух.**

| способ | как сравнивает |
|---|---|
| быстрый | размер и время |
| безопасный | плюс контрольная сумма там, где размер совпал, а время разошлось |
| строгий | сумма для всех файлов одного размера, даже при совпавшем времени |

Безопасный не ловит случай «тот же размер, то же время, другое содержимое» — для
этого есть строгий.

**Удаление — это отдельная политика, а не побочный эффект.** Одностороннее
обновление ничего не удаляет. Жёсткое зеркало удаляет то, чего нет в источнике, —
и называется жёстким. Есть промежуточный вариант: лишнее уезжает в карантин, а не
стирается.

**Облака отделены от файлов.** Обычные пути — локальные и внешние диски, сетевые
папки, смонтированные удалённые хранилища — идут через файловый движок. Настоящие
облачные хранилища живут в отдельном разделе на своём движке. **Токены доступа и
содержимое его настроек в файлы проекта не попадают.**

**Пропавший диск — не пустая папка.** Отключившийся сетевой монтаж Windows
показывает как существующий и пустой каталог, и зеркало прочитало бы это как
«удалить в приёмнике всё». Поэтому у профилей с сетевым корнем стоит якорь:
файл `.audion-anchor` должен лежать в обоих корнях до начала обхода. Он
создаётся один раз отдельной командой и **никогда не создаётся сам во время
прогона** — иначе защита защищала бы от чего угодно, кроме настоящего случая.

**Перед запуском показывают, чем рискуете.** Карточка над командой называет
три вещи: на месте ли якорь, хватает ли свободного места под планируемую запись
и сколько файлов будет удалено — числом и долей от приёмника. Для зеркальных
политик там же выдаётся подтверждение, привязанное к просмотренному плану:
запустить можно ровно то, что показали.

**Проверено на настоящих папках, а не на примерах.** В последнем прогоне:
копирование по маске `*.docx` перенесло 29 документов, слепок сумм построен на
2478 записей, проверка этого слепка прошла. Интерактивным остаётся только выбор
папки системным окном — он требует живого нажатия.

## Что умеет

| раздел | о чём |
|---|---|
| Сравнение | что различается между двумя папками, без изменений на диске |
| Одностороннее обновление | новые и изменённые уходят в приёмник, ничего не удаляется |
| Зеркало | точная копия источника, включая удаление лишнего в приёмнике |
| Зеркало с карантином | то же, но лишнее уезжает в карантин |
| Двусторонняя сверка | обмен недостающим и более новым, без автоматических удалений |
| Слепок и разница | список путей с контрольными суммами, применяемый как обновление или зеркало |
| Копирование по маске | разовая выборка: только документы, только медиа, только своё |
| Архивация | ZIP, 7Z, SFX, TAR и его сжатые варианты; шифрование, самораспаковка |
| Передача данных | папка, сетевая шара, сервер и облако наравне; движок под пару выбирается сам |

Фильтр по типам файлов — не список расширений в поле, а браузер: группы для
документов, разработки, медиа, архивов, приложений, временного, плюс свои маски.

## Дальше

* [Руководство](USER_GUIDE_RU.md) — работа по шагам, режимы, профили.
* [Справочник команд](COMMAND_REFERENCE_RU.md) — все команды и параметры.
* `tools\SYNC_PROFILES_RU.md` — профили, предустановки, фильтры.
* `tools\ARCHIVE_OPERATIONS_RU.md` — архивы, самораспаковка, шифрование.
* `tools\TRANSFER_RU.md` — передача данных: операции, движки, упаковка.
* `tools\RCLONE_OPERATIONS_RU.md` — подключения к облакам, диагностика.
* `tools\RCLONE_PORTABILITY_RU.md` — установка, портативные настройки, перенос.
* `tools\MANIFEST_DIFF_RU.md` — слепки и разница.
* `tools\WORKBENCH_AND_GUI_RU.md` — рабочая область, терминал, подсказки.

---

## Техническая часть

### Запуск

```cmd
launcher_project.cmd     основной
launcher_profiles.cmd    сохранённые профили синхронизации
```

Оба работают и через быстрый выбор, и через обычное меню.

### Режимы и с чего начинать

| сценарий | команда | направление | удаляет | с чего начать |
|---|---|---|---|---|
| проверка папки | `audit` | одна папка | нет | сразу |
| сравнение | `compare` | источник → приёмник | нет | перед любой серьёзной операцией |
| одностороннее, пробно | `sync --dry-run` | источник → приёмник | нет | после сравнения |
| одностороннее | `sync` | источник → приёмник | нет | после пробного |
| зеркало, пробно | `backup --preview` | источник → приёмник | нет | по желанию |
| зеркало | `backup` | источник → приёмник | **да** | когда это нужно |
| зеркало с карантином | `backup --operation-policy mirror_safe` | источник → приёмник | в карантин | по желанию |
| двусторонняя, пробно | `sync2 --dry-run` | в обе стороны | нет | перед запуском |
| двусторонняя | `sync2` | в обе стороны | нет | после пробного |
| копирование по маске | `copy_by_mask --mask-globs` | источник → приёмник | нет | пробный прогон |
| сохранённый профиль | `--pair` | по настройке | по политике | сравнение → предпросмотр → запуск |

Устаревший ключ `dry_run_default` игнорируется с предупреждением — направление и
удаление задаются явной политикой операции.

### Что где лежит

```
config\sync_presets.json    предустановки фильтров
config\sync_pairs.json      сохранённые пары папок и политики
config\rclone\rclone.conf   портативные настройки облаков
```

### Границы файлового движка

Основной движок работает с тем, что Windows и Python видят обычной папкой:
локальные и внешние диски, сетевые пути, смонтированные сетевые папки, локальные
папки облачных клиентов, смонтированные удалённые хранилища.

Настоящие облачные хранилища — раздел передачи данных: он ходит своими движками,
по умолчанию через портативные настройки в проекте, и не хранит ни токенов, ни
содержимого этих настроек в файлах проекта.

### Названия в рабочей области

Единый словарь для всех проектов Audion: **Источник**, **Добавить файл…**,
**Назначение**, **Сбросить**, **Удалить**, **Список**. По-английски: **Source**,
**Add file…**, **Target**, **Reset**, **Delete**, **List**.

`Сбросить` возвращает проектные папки и файлов не трогает. `Удалить` очищает
текущие источник и назначение только после подтверждения. Слова «Цель»,
«Очистить», `Destination` и `Clear` для этих кнопок не используются.
