Аргументы командной строки для создания резервной копии данных

Аргументы командной строки лаунчера (TSLab.exe) для создания резервной копии данных

Лаунчер — TSLab.exe. Он выполняет операции, которые нельзя сделать из работающей программы: создание и восстановление резервной копии, обновление, перезапуск. Режим и состав операции задаются только аргументами командной строки. Важно! Нужно обеспечить, чтобы создание резервной копии осуществлялось без запущенного процесса основной программы. Это связано как с системными блокировками некоторых файлов на чтение, так и целостностью данных (когда происходит параллельная запись и чтение группы взаимосвязанных файлов). Лаунчер сам проверяет, запущена ли программа (desktop или консоль) с той же папкой данных, и просит её штатно завершиться; если программа завершиться не может, резервная копия не создаётся (см. «Завершение запущенной программы»). Если задан аргумент -pid, проверка не выполняется: лаунчер ждёт завершения процесса с этим Id.

Формат команды создания резервной копии

TSLab.exe -backup=<zip> [общие аргументы] [разделы данных]
  • <zip> - Путь к создаваемому архиву.

  • Переключатель: -ключ. Аргумент со значением: -ключ=значение или -ключ="значение с пробелами".

  • Регистр ключей не важен: -noStop и -nostop равнозначны.

  • Неизвестные ключи молча игнорируются.

  • Повтор ключа в одинаковом написании (-pr -pr) приводит к исключению при старте. Если написание отличается только регистром (-pwd=... -PWD=...), исключения нет, действует последнее значение.

  • Ключ отделяется от значения первым знаком =, остальные = входят в значение: из -pwd=a=b будет взято a=b.

  • Значение с пробелами, кавычками или \ на конце берётся в кавычки и экранируется по правилам Windows (CommandLineToArgvW): " внутри значения записывается как \"; обратные слеши, за которыми идёт " (в том числе закрывающая), удваиваются; остальные слеши пишутся как есть.

    Значение

    Аргумент

    my pass

    -pwd="my pass"

    a=b

    -pwd=a=b или -pwd="a=b"

    q"uote

    -pwd="q\"uote"

    ends\

    -pwd="ends\\"

    C:\Backup\

    -cf="C:\Backup\\"

  • Значение -pwd пишется в лог лаунчера замаскированным (-pwd=***). При этом пароль остаётся в командной строке процесса, и его могут прочитать другие программы этого же пользователя (Диспетчер задач, WMI).

  • Если значение пути пустое (-cf=), остаётся значение по умолчанию.

Общие аргументы

Аргумент

Значение

По умолчанию

Описание

-appPath=<папка>

Папка программы

не задана

Откуда/куда брать файлы программы и откуда запускать её после операции. Если не задана, программа запускается из папки лаунчера.

-ad=<папка>

Папка данных приложения

%LOCALAPPDATA%\TSLab\TSLab 3.0

Папка с базами, настройками, глобальным кешем и примитивами.

-pid=<число>

PID процесса программы

не задан

Перед операцией лаунчер ждёт завершения этого процесса (см. -wait). Без -pid лаунчер сам проверяет, запущена ли программа.

-wait=<сек>

Время ожидания в секундах

1800

Сколько ждать завершения программы.

-nocheck

—

выключен

Не проверять, запущена ли программа.

-noStop

—

выключен

Если программа запущена, не завершать её, а отменить операцию (код 12).

-quiet

—

выключен

Без окна и диалогов об ошибках: результат только в логе и коде возврата.

-pwd=<пароль>

Пароль архива

нет

Пароль архива. Пароль с пробелами, " или \ на конце передаётся в кавычках (см. «Формат»). В лог не пишется.

-skipStart

—

выключен

Не запускать программу после операции.

-noadmin

—

выключен

Не требовать прав администратора для -backup, -restore, -update.

-locale=<культура>

Имя культуры, например ru, en

культура UI системы

Язык интерфейса лаунчера.

-theme=<тема>

Light или Dark (регистр не важен)

Light

Тема окна. Любое другое значение даёт Light.

-logfile=<имя>

Имя лог-файла

по режиму

Имя файла в папке логов %LOCALAPPDATA%\TSLab\TSLab 3.0\Logs.

-im

—

выключен

Имитация: операция проигрывается без изменения файлов (см. ниже).

Имя лог-файла по умолчанию: launcherAdmin.log, если лаунчер запущен с правами администратора (обычный случай для -backup без -noadmin); иначе launcher.log.

Разделы данных

Эти аргументы выбирают, что попадает в резервную копию.

Аргумент

Значение

Раздел

Примечание

-cr

—

Основные файлы данных: TSLab3.sqlite (с -wal/-shm), Settings.db, Encrypted.db, TSLab.AppSettings.xml, TSLab.Notification.xml, UserSettings.db

При создании копии указывать не нужно: эти файлы сохраняются всегда. Ключ используется при восстановлении.

-dsp

—

Настройки и пароли поставщиков данных: Provider.db

-app

—

Файлы программы из папки -appPath

Без -appPath берётся %ProgramFiles%\TSLab\TSLab 3.0. Папка должна существовать.

-cd

—

Кеш данных: папки <поставщик>CacheData

Требует -cds.

-cb

—

Кеш баров: папки <поставщик>Cache

Требует -cds.

-ct

—

Кеш сделок: папки <поставщик>CacheTrades

Требует -cds.

-cds=<список>

Имена поставщиков через ;

Список поставщиков для -cd, -cb, -ct

Без списка кеши не обрабатываются.

-cf=<папка>

Папка кешей

Корень, в котором лежат папки кешей

По умолчанию %LOCALAPPDATA%\TSLab\TSLab 2.0, если она существует, иначе %LOCALAPPDATA%\TSLab\TSLab 3.0\Caches.

-cg

—

Глобальный кеш: папка $Global$Objects$ в папке данных

-pr

—

Графические примитивы: папка Primitives в папке данных

-handlers=<папка>

Папка пользовательских кубиков

Содержимое папки целиком

Включает раздел. При пустом значении — %LOCALAPPDATA%\TSLab\TSLab 2.0\Handlers, если есть, иначе %LOCALAPPDATA%\TSLab\TSLab 3.0\Handlers.

-w=<папка>

Папка рабочих пространств

Файлы *.tlws из папки (без подпапок)

Включает раздел. Значение по умолчанию отсутствует.

Поведение

Проверки перед запуском

Путь к архиву не пуст; при -app папка программы существует; права администратора или -noadmin.

При нарушении условия показывается сообщение об ошибке и лаунчер закрывается.

Завершение запущенной программы

Перед созданием резервной копии лаунчер проверяет, запущена ли программа (desktop TSLabApp/TSLabAppW или консоль TSLabConsole) с той же папкой данных (-ad), и просит её штатно завершиться.

  1. Если задан -pid или -nocheck, проверка не выполняется: с -pid процесс известен и завершается сам.

  2. Лаунчер подключается к каналу управления программы. Канала нет — программа не запущена, операция выполняется сразу.

  3. Канала нет, но desktop-программа держит признак единственного экземпляра (старая версия, ещё загружается, зависла) — операция отменяется, код 12.

  4. С -noStop запущенная программа не завершается, операция отменяется, код 12.

  5. Иначе программе отправляется команда завершения. Программа либо подтверждает её, либо отказывает — тогда операция отменяется, код 10.

  6. После подтверждения лаунчер ждёт завершения процесса до -wait секунд (по умолчанию 30 минут). Не дождался — код 11. Если закрытие в программе отменилось (например, ошибка сохранения), программа сообщает об этом, код 10.

Программа завершается без интерактивных вопросов, на любой запрос подразумевается ответ «Да»:

  • изменённые скрипты и рабочее пространство сохраняются; рабочее пространство, у которого ещё нет файла, не сохраняется;

  • идущая оптимизация и работающие агенты останавливаются;

  • режим «сворачивать в трей при закрытии» игнорируется.

Программа отказывает в завершении, если ещё загружается или в ней открыт модальный диалог.

После операции запускается desktop-программа (если не указан -skipStart). Остановленная консоль TSLabConsole заново не запускается.

Создание резервной копии (-backup)

  1. Завершение запущенной программы или ожидание завершения процесса -pid (если задан).

  2. Создание zip-архива (UTF-8, Zip64 при необходимости, пароль из -pwd).

  3. Запуск программы, если не указан -skipStart.

Окно и отмена

Окно появляется примерно через 2 секунды после старта. Пока лаунчер ждёт завершения программы, в окне идёт обратный отсчёт (-wait, по умолчанию 30 минут). Кнопка отмены прерывает операцию и сразу закрывает лаунчер; программа после отмены не запускается. С -quiet окно и диалоги об ошибках не показываются.

Коды возврата

Код

Причина

0

Операция выполнена.

1

Версия Windows ниже 10.

3

Лаунчер уже запущен.

10

Программа отказалась завершаться или начатое завершение отменилось (открыт диалог, программа ещё загружается, не удалось сохранить изменения).

11

Программа не завершилась за время -wait.

12

Программа запущена, но не отвечает по каналу управления (старая версия, ещё загружается, зависла), либо запущена и указан -noStop.

13

Операция отменена пользователем.

20

Ошибка при выполнении операции.

21

Неверные аргументы (не пройдены проверки перед запуском).

TSLab.exe — оконное приложение: командная оболочка не ждёт его завершения. Чтобы получить код возврата из скрипта, запускайте с ожиданием:

$p = Start-Process -FilePath "TSLab.exe" -ArgumentList '-backup="D:\Backup\tslab.zip"', '-quiet', '-skipStart' -Wait -PassThru $p.ExitCode

Аргументы в PowerShell записывайте в одинарных кавычках: так " и \ передаются лаунчеру без изменений, например '-pwd="my \"pass\""'.

Подробности ошибки — в логе.

Примеры

Резервная копия основных данных, паролей поставщиков, кешей баров двух поставщиков, примитивов и кубиков:

TSLab.exe -backup="D:\Backup\tslab.backup.202610011200.zip" -appPath="C:\Program Files\TSLab\TSLab 3.0" -theme=Dark -locale=ru -pid=12345 -dsp -cb -cf="C:\Users\user\AppData\Local\TSLab\TSLab 3.0\Caches" -cds="Finam;Binance" -pr -handlers="C:\Users\user\AppData\Local\TSLab\TSLab 3.0\Handlers"

Резервная копия из внешнего скрипта: лаунчер сам завершит запущенную программу, окна не показываются, программа после операции не запускается:

TSLab.exe -backup="D:\Backup\tslab.zip" -quiet -skipStart -wait=600 -dsp -pr

Резервная копия с паролем, включая файлы программы и рабочие пространства, без перезапуска программы:

TSLab.exe -backup="D:\Backup\full.zip" -pwd=secret -appPath="C:\Program Files\TSLab\TSLab 3.0" -app -cg -w="D:\Workspaces" -skipStart

Резервная копия с паролем my pass="1"\, в котором есть пробел, =, кавычки и \ на конце:

TSLab.exe -backup="D:\Backup\full.zip" -pwd="my pass=\"1\"\\" -dsp -pr