Disk Tools
github.com/Tensionix/disk-tools ↗
Необычный способ копировать и зеркалить данные между дисками, сетевыми и облачными ресурсами — через пресеты и маски. Архивация множественных источников с масками, работа с RClone в окне, а не в консоли. Отвалившийся сетевой диск выглядит для системы как обычная пустая папка — и зеркало честно стирает в приёмнике всё. Здесь этого не случится: в обоих корнях требуется файл-якорь, и без него прогон не начинается. Удалённое можно не удалять, а уводить в карантин с отметкой времени; у любой операции есть пробный прогон и потолок удалений. Сверять файлы можно по размеру и дате, а можно по хешу — вплоть до строгого режима, который не верит даже совпавшему времени. Маршрут задаётся любой: локальный диск, внешний, сетевая шара, S3, SFTP, облако по OAuth. Терабайты не нужно втягивать внутрь программы, а движок под конкретную пару выбирается сам — Robocopy на папки и шары, RClone на облака и сверку по хешу — и назван в окне до старта, так что невозможная пара видна раньше, чем тронется первый байт. Отправку мелких файлов спасает упаковка на лету: замерено 24 МБ/с одним архивом против 0,46 МБ/с россыпью. Интерфейс не подменяет команды: он их составляет, показывает целиком и запускает — источником правды остаётся консольное ядро.
3 загрузки с GitHubAudion Disk Tools
English · Руководство · Справочник команд
Содержание
- Зачем это сделано
- Принципы
- Что умеет
- Дальше
- Техническая часть
- Запуск
- Режимы и с чего начинать
- Что где лежит
- Границы файлового движка
- Названия в рабочей области
Портативный набор для работы с дисками и файлами в Windows: сверить, обновить, зеркалировать, отфильтровать по типам, упаковать, передать по сети или в облако.
Зачем это сделано
Синхронизация файлов — задача, где ошибка обходится дороже всего остального. Программа, которая «просто копирует», однажды удаляет то, чего в источнике уже нет, — и выясняется это, когда источник тоже потерян. Программа, которая «умно решает», делает это молча.
Здесь всё наоборот: направление, удаление и способ сравнения объявлены явно, а перед любой серьёзной операцией есть шаг, который ничего не меняет.
Лестница безопасности, по которой идут:
1. сравнить что вообще различается — без записи на диск
2. предпросмотр что именно будет скопировано, обновлено, удалено
3. запуск то, что показал предпросмотр
Для повседневного зеркалирования держат безопасный способ сравнения; строгий включают, когда важны файлы одного размера с одинаковым временем.
Принципы
Никаких двух фиксированных папок. Источник и назначение выбираются произвольно: внешний диск, сетевой путь, большой каталог. Терабайты не копируются внутрь проекта, чтобы с ними поработать.
Способ сравнения назван вслух.
| способ | как сравнивает |
|---|---|
| быстрый | размер и время |
| безопасный | плюс контрольная сумма там, где размер совпал, а время разошлось |
| строгий | сумма для всех файлов одного размера, даже при совпавшем времени |
Безопасный не ловит случай «тот же размер, то же время, другое содержимое» — для этого есть строгий.
Удаление — это отдельная политика, а не побочный эффект. Одностороннее обновление ничего не удаляет. Жёсткое зеркало удаляет то, чего нет в источнике, — и называется жёстким. Есть промежуточный вариант: лишнее уезжает в карантин, а не стирается.
Облака отделены от файлов. Обычные пути — локальные и внешние диски, сетевые папки, смонтированные удалённые хранилища — идут через файловый движок. Настоящие облачные хранилища живут в отдельном разделе на своём движке. Токены доступа и содержимое его настроек в файлы проекта не попадают.
Пропавший диск — не пустая папка. Отключившийся сетевой монтаж Windows показывает как существующий и пустой каталог, и зеркало прочитало бы это как «удалить в приёмнике всё». Поэтому у профилей с сетевым корнем стоит якорь: файл .audion-anchor должен лежать в обоих корнях до начала обхода. Он создаётся один раз отдельной командой и никогда не создаётся сам во время прогона — иначе защита защищала бы от чего угодно, кроме настоящего случая.
Перед запуском показывают, чем рискуете. Карточка над командой называет три вещи: на месте ли якорь, хватает ли свободного места под планируемую запись и сколько файлов будет удалено — числом и долей от приёмника. Для зеркальных политик там же выдаётся подтверждение, привязанное к просмотренному плану: запустить можно ровно то, что показали.
Проверено на настоящих папках, а не на примерах. В последнем прогоне: копирование по маске *.docx перенесло 29 документов, слепок сумм построен на 2478 записей, проверка этого слепка прошла. Интерактивным остаётся только выбор папки системным окном — он требует живого нажатия.
Что умеет
| раздел | о чём |
|---|---|
| Сравнение | что различается между двумя папками, без изменений на диске |
| Одностороннее обновление | новые и изменённые уходят в приёмник, ничего не удаляется |
| Зеркало | точная копия источника, включая удаление лишнего в приёмнике |
| Зеркало с карантином | то же, но лишнее уезжает в карантин |
| Двусторонняя сверка | обмен недостающим и более новым, без автоматических удалений |
| Слепок и разница | список путей с контрольными суммами, применяемый как обновление или зеркало |
| Копирование по маске | разовая выборка: только документы, только медиа, только своё |
| Архивация | ZIP, 7Z, SFX, TAR и его сжатые варианты; шифрование, самораспаковка |
| Передача данных | папка, сетевая шара, сервер и облако наравне; движок под пару выбирается сам |
Фильтр по типам файлов — не список расширений в поле, а браузер: группы для документов, разработки, медиа, архивов, приложений, временного, плюс свои маски.
Дальше
- Руководство — работа по шагам, режимы, профили.
- Справочник команд — все команды и параметры.
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— рабочая область, терминал, подсказки.
Техническая часть
Запуск
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 для этих кнопок не используются.
Программа портативная: распакованная папка и есть установленная программа. Реестр не трогается, удаление — удалить папку.
$name = "Audion_Disk_Tools_v4.0.1_Full.zip"
Invoke-WebRequest "https://audion.dev/get/disk-tools/4.0.1/Audion_Disk_Tools_v4.0.1_Full.zip" -OutFile $name
Invoke-WebRequest "https://audion.dev/get/disk-tools/4.0.1/Audion_Disk_Tools_v4.0.1_Full.zip.sha256" -OutFile "$name.sha256"
$want = (Get-Content "$name.sha256").Split(" ")[0]
$have = (Get-FileHash $name -Algorithm SHA256).Hash.ToLower()
if ($want -ne $have) { throw "сумма не сошлась: загрузка повреждена" }
Expand-Archive $name -DestinationPath ".\disk-tools"