• Выберите язык EN RU

PYBAG командный интерфейс

Команды и опции

Командная строка:

pybag.py --command -option1 -option2 argument1 argument2 ...

Предупреждение

За один раз может быть выполнена только одна команда.

Примечание

Используйте режим эмуляции -m1 (по умолчанию всегда включен) до того как выполните реальную команду (исключение --dist). Для выполнения реальных действий с файлами вам нужно будет использовать опцию -m0.

Команды

При запуске программы без аргументов будет открыт графический интерфейс (как команда --gui).

add

--add { -kFLAG -sFLAG -eFILEMASK -bFLAG -xDEF -rDIR } path1 {path2 ...}

Добавляет новые корни (roots) в портфель.

Если опции -k -e -s не указаны то будут использоваться их значения по умолчанию (символьные ссылки игнорируются, все файлы для синхронизации, сравнение по состоянию). На следующем шаге после добавления вы должны будете синхронизировать портфель командой –sync. Опции установленные в этой команде будут использованы и при синхронизации. Позднее вы можете изменить опции в ручную в файле pybag.cfg.

Опции:

  • -kFLAG - Действия с символьными ссылками. Отключение эмуляции увеличивает скорость работы, FLAG это:

    • c, copy - копировать символьные ссылки, эмулировать их если необходимо.

    • cn, copynoemul - копировать символьные ссылки, но неэмулировать их.

    • i, ignore - игнорировать символьные ссылки, проверять их эмуляцию. По умолчанию.

    • in, ignorenoemul - игнорировать символьные ссылки, эмуляцию не проверять.

  • -sFLAG - Устанавливает метод сравнения для файлов. FLAG метод сравнения:

    • stat или нет флага или флаг пустой - использовать только информацию состояния (размер и дата последнего изменения) - по умолчанию. При сравнении директорий и символьных ссылок дата модификации не учитывается.

    • crc32 - использовать CRC32 проверку при синхронизации (если информация о состоянии идентична то производится дополнительная проверка по CRC32).

  • -eFILEMASK - Исключить из обработки все файлы соответствующие шаблону FILEMASK. Вы может использовать несколько опций -e. По умолчанию обрабатываются все файлы. FILEMASK может содержать:

    • групповой символ - звездочка * обозначает любое количество любых символов, а вопросительный знак ? один любой символ. Пример: *.exe.

    • Регулярное выражение - должно начинатся с восклицательного знака !, пример: !(.*\.bak$)|(.*\.pyc).

  • -b - Режим резервной копии:

    • 0 - Обычный режим синхронизации. Это значение по умолчанию.

    • 1 - Режим резервной копии. В этом режиме синхронизация выполняется в одну сторону (в портфель, направление bagall как в команде --sync) и до 2 раз быстрее чем обычная синхронизация, потому что читаются только оригинальные файлы и копируются в портфель при необходимости.

  • -xDEF - Помечает корень «по умолчанию». Если не указана опция то корни помечаются «по умолчанию».

    • 0 - Корень не помечен «по умолчанию».

    • 1 - Корень помечен «по умолчанию».

  • -rDIR - Все элементы из директории DIR будут добавлены как корни. Вы можете использовать несколько опций -r.

Если у вас есть резервная копия в одном из корней в портфеле то вы можете в файле конфигурации для этого корня указать опцию: backup = 1, и использовать теперь этот корень как резервную копию (синхронизация будет в 2 раза быстрее).

Пример:

> python pybag.py --add -kc -e".*,*~" "/home/user/docs1" "/home/user/memo.txt" "/home/user/news"

где:

  • kc - копировать символьные ссылки,

  • e".*,*~" - игнорировать скрытые файлы (начинающиеся с точки), и игнорировать все архивные копии (заканчивающиеся на тильду).

  • Последние параметры - пути к директориям и файлам которые вы хотите добавить в портфель.

remove

--remove root1 {root2 ...}

Удаляет корни и файлы из портфеля. Не изменяет файлов в исходном месте (origin).

gui

--gui

Запускает программу с графическим интерфейсом.

dist

--dist {-z} {-i} {-a} {-rROOT1 ...} {path1}

Распространяет программу PYBAG в заданное место.

Это делает чистое распространение без копирования каких либо файлов из текущего портфеля. Если опции -r или -a указаны то также в месте куда происходит распространение настраивается pybag.cfg так чтобы он указывал на текущий портфель для копируемых корней. Если путь path1 указывает на другой портфель то корни и файлы будут добавлены к нему. Если вы инициализируете портфель опцией -i то вы можете не указывать пути path1. С другими опциями пути path1 необходимы.

Опции:

  • -z - Копирует все дополнительные файлы (руководство, лицензию и так далее.). Создает папку pybagfiles если необходимо. Корни не копируются.

  • -i - Инитциализация - Создает папку pybagfiles файлы конфигурации и базы данных. Если path1 не указан то инициализирует текущий портфель, иначе проводит инициализацию в указанном месте. Создает только отсутствующие элементы, существующие не изменяет. Если path1 не существует, то пытается создать папку по этому пути.

  • -a - Копирует все корни (если дана эта опция, то в опции -r указываются те корни, которые не нужно копировать).

  • -rROOT - Распространяет только указанные корни (при опции -a наоборот их игнорирует).

Пример:

> python pybag.py --dist -i -m0

Инициализирует текущий портфель.

> python pybag.py --dist -i -a -m0 "/work/user/bag"

Инициализирует /work/user/bag. Копирует туда pybag.py, так же добовляет все корни из текущего портфеля в портфель в указанном месте.

sync

--sync { -fFILE } {-dDIR} {-dDIR} {-sMDDELTA} { -pA } { -bFLAG } { -gOUTFILTER } { -yFLAGVALUE } {path1}

Синхронизирует текущий портфель с оригинальными файлами. Если указан путь path1 то синхронизует с указанным путем (path1). Если опция -f не указана то пытается синхронизировать все корни с путем path1/r. Если указана опция -f то путь path1 должен соответствовать пути в опции. После сравнения файлов вам нужно будет подтвердить продолжение синхронизации ответом действием y либо отказатся n.

Опции:

  • -fFILE - Синхронизирут или копирует только указанный файл FILE, где FILE относительный путь относительно /pybagfiles. Для примера: если у вас есть файл pybag/pybagfiles/project/bin/file1.py, то для синхронизации только его вы должны написать pybag --sync -f"project/bin/file1.py".

    Можно синхронизировать корни выборочно с опцией -f: pybag --sync -f"root1" -f"root5" - синхронизировать только корни «root1» и «root5».

  • -xDEF - Выбирает корни для синхронизации. Если опция не указана то выбираются отмеченные «по умолчанию». Так же эта опция игнорируется при использовании опции -f.

    • all - Все корни.

    • default - Только помеченные «по умолчанию». Если опция не указана то выбираются отмеченные «по умолчанию». Так же эта опция игнорируется при использовании опции -f.

  • -dDIR Направление синхронизации если будут конфликты:

    • bag - писать измененые файлы в портфель при конфликте.

    • origin - писать измененые файлы в исходные файлы при конфликте.

    • newer - более новые файлы перезаписывают старые при конфликте.

    • older - более старые файлы перезаписывают новые при конфликте.

    • no - не изменять файлы при конфликте. Это действие по умолчанию.

    • bagall - записать все изменения исходных файлов в портфель.

    • originall - записать все изменения файлов в портфеле в исходные файлы.

    • bagcopy - копировать все изменения исходных файлов в портфель, но не удалять из портфеля.

    • origincopy - копировать все изменения в файлах портфеля в исходные файлы, но не удалять ничего в исходных файлах.

    newer и older могут использоваться вместе с bag and origin (для примера -dbag -dnewer ). Сначало будут проверены условия newer и older, а потом bag и origin.

    Предупреждение

    Не смешивайте другие флаги между собой, результат может быть не предсказуемым.

  • -sMDDELTA - Устанавливает разницу в дате модификации в секундах (число с плавающей точкой). Если даты модификации различаются между собой менее чем на MDDELTA то они считаются равными. Эта опция переопределяет (только для текущей команды) значение заданное в файле конфигурации.

  • -bFLAG - Устанавливает режим резервного копирования (для корней - резервных копий).

    • 0 - Стандартный режим (по умолчанию) - быстрый и в одну сторону (копирует изменения в оригиналах в портфель). Все файлы которые есть в портфеле и не изменялись останутся не тронутыми.

    • 1 - Полная синхронизация резервной копии - полная синхронизация с оригиналами (приводить портфель в полное соответствие с оригиналом). Все файлы которых нет в оригинале будут удалены и из портфеля.

  • -pA - Устанавливает автопродолжение синхронизации:

    • y - Да, продолжить.

    • n - Нет, выйти.

    Если вы не указали автопродолжение (опция -p) то будет отображено интерактивное меню. В меню можете использовать следующие команды:

    • h - Отображает короткую помощь по меню.

    • d DIR DIR - Изменяет правила автоматического разрешения конфликтов (После этой команды сравнение файлоф будет повторено и меню отобразится опять).

    • m FLAG - Изменяет уровень эмуляции. Может быть 0 или 1.

    • v FLAG - Изменяет уровень выводимой информации. может 0 или 1.

    • y - Продолжить синхронизацию.

    • n - Выйти из синхронизации.

    • g OUTFILTER - Изменяет формат отчета. Подробнее смотрите в опции -g.

    • r - Повторный вывод отчета.

    • a #ACTION FILTER - Ручная установка (форсирование) операции ACTION над файлами FILTER.

      • ACTION может быть:

        • delete - удалить,

        • bag - копировать в портфель или игнорировать если оригинальный объект удален,

        • origin - копировать в оригинал или игнорировать если из портфеля объект удален,

        • skip - пропустить (пометить как не измененный),

        • restore - восстановить действие которое было назначено автоматически,

        • tsbag - сдвиг времени в портфеле, FILTER выбирает шаблон (обычно *),

        • tsorigin - сдвиг времени в оригинале, FILTER выбирает шаблон (обычно *),

        • tsreset - сброс сдвига по времени FILTER выбирает шаблон (обычно не требуется).

      • # означает + или - или ничего (например: a +skip !.*\.exe ):

        • + - интерактивные действия, спрашивать для каждого объекта подтверждение.

        • - - пометить действие молча.

        • ничего - отображать действия, но не спрашивать подтверждения.

      • FILTER - маска пути:

        • Групповые символы - звездочка * обозначает любое количество любых символов, а вопросительный знак ? один любой символ. Пример: *.exe.

        • Регулярное выражение - должно начинатся с восклицательного знака !, для примера: !(.*\.bak$)|(.*\.pyc).

        Если фильтр не указан то действие применяется ко всем файлам (то же что и *).

        После использования операций сдвига по времени ts... все файлы будут сравнены заново и действия сброшены. Используйте операции сдвига по времени ts... первыми, а уже после них все остальные действия.

  • -gOUTFILTER - Устанавливает формат отчета о сравниваемых файлах. По умолчанию -gsbonhdyftwce1234 - отображает отчет обо всех операциях с: новыми, копируемыми, удаляемыми, форсированными и не форсированными объектами, ошибки, конфликты и предупреждения для всех направлений (действия) и всех файлов.

    • x - Не показывать отчет совсем. Его можно будет просмотреть позже из интерактивного меню.

    • l - Длинный формат отчета: %(forced)s %(dir)s %(err)s [%(path)s]\n\t%(desc)s.

    • s - Короткий формат отчета: %(forced)s %(dir)s %(err)s [%(path)s].

    • p - Отчет как в предыдущих версиях (0.2 и ранее): \t[%(path)s]-->\n\t  == "%(desc)s".

    • m..FORMAT.. - В ручную указать формат как для функции «print». .. - разделитель (могут использоваться любые два символа). В строке формата могут использоваться следующие ключевые слова записанные в следующем формате: %(forced)s. возможные ключевые слова следующие:

      • err - отображается w, c, e или «пробел» - предупреждения, конфликт, ошибка или ничего.

      • forced - отображается ! или «пробел» - Операция форсированная или нет.

      • path - Путь объекта (в формате системы).

      • desc - Описание операции.

      • type - отображается f, d, s ,»пробел» - Тип объекта, файл, директория, символьная ссылка или неизвестный объект (нормально этого не должно быть),

      • mdatedb - Дата модификации в базе данных, секунды.

      • gmdatedb - GMT дата модификации базы данных, «YYYY-DD-MM HH-HH-SS».

      • lmdatedb - Локальная дата модификации базы, «YYYY-DD-MM HH-HH-SS».

      • crc32db - CRC32 в базе, «0xFFFFFFFF».

      • sizedb - Размер объекта в базе.

      • mdatebag - Дата модификации в портфеле, секунды.

      • gmdatebag - GMT дата модификации в портфеле, «YYYY-DD-MM HH-HH-SS».

      • lmdatebag - Локальная дата модификации в портфеле, «YYYY-DD-MM HH-HH-SS».

      • crc32bag - CRC32 в портфеле, «0xFFFFFFFF».

      • sizebag - Размер объекта в портфеле.

      • mdateorigin - Дата модификации оригинала, секунды.

      • gmdateorigin - GMT дата модификации оригинала, «YYYY-DD-MM HH-HH-SS».

      • lmdateorigin - Локальная дата модификации оригинала, «YYYY-DD-MM HH-HH-SS».

      • crc32origin - CRC32 оригинала, «0xFFFFFFFF».

      • sizeorigin - Размер оригинала.

      • symlinkdb - Link point in DB, «-» otherwise.

      • symlinkbag - Link point in bag, «-» otherwise.

      • symlinkorigin - Для символической ссылки отображается точка ссылки, «-» в других случаях.

      • timeshift - Сдвиг времени:

        • b - Сдвиг в портфель,

        • o - Сдвиг в оригинал,

        • «пробел» - нет сдвига времени.

      • dir - Direction, displayed by next symbols:

        • <<< - Новый объект в оригинале, копировать в портфель.

        • >>> - Новый объект в портфеле, копировать в оригинал.

        • <-- - Оригинал изменился, копировать в портфель.

        • --> - Объект в портфеле изменился, копировать в оригинал.

        • xxx - Удалить объект.

        • --- - Игнорировать объект.

        • === - Объект не изменен.

        • <== - Объект не изменен, сдвиг времени в портфеле.

        • ==> - Объект не изменен, сдвиг времени в оригинале.

        • *** - Ошибка в фильтре и програме. (Сообщите автору программы если появится такой символ).

    • z00 - Отображать отчет по 00 объектов на страницу.

    • b - Операции направленые в портфель.

    • o - Операции напрвленные в оригинал.

    • n - Новые объекты.

    • h - Измененые объекты (копируемые).

    • d - Удаляемые объекты.

    • i - Игнорируемые объекты.

    • u - Неизменные объекты.

    • f - Объекты с форсированным действием.

    • y - Объекты со сдвигом по времени.

    • w - Предупреждения.

    • c - Конфликты.

    • e - Ошибки.

    • 1 - Файлы.

    • 2 - Директории.

    • 3 - Символьные ссылки.

    • 4 - Неизвестные объекты (Такой ситуации не должно возникать …).

    • r..PATT.. - Фильтр объектов (пути). Групповые символы или регулярное выражение. Если не указан то отображаются все объекты с любыми путями.

    Когда вы просматриваете отчет постранично (опция -z00) то вы можете осуществлять следующие действия:

    • Нажать просто ENTER просмотр следующей страницы,

    • Ввести число NUMBER изменение размера страницы,

    • Ввести q выход из просмотра отчета,

    • Ввести a пролистать весь отчет.

Для использования резервной копии добавте корень как рез.копию:

python pybag.py --add -b1 root

Если вы уже имеете резервную копию предыдущей версии программы то можете просто в файле конфигурации для соответствующего корня указать опцию: backup = 1, и использовать дальше этот корень как резервную копию (синхронизация будет проходить в 2 раза быстрее).

relocate

--relocate -rROOT=NEWPATH { -rROOT=NEWPATH ...}

Изменение размещения оригиналов для корней. Заменяет исходный путь для корня ROOT на новый путь NEWPATH. (Изменяется только конфигурационный файл).

stat

--stat { -xDEF -rROOT -rROOT ... }

Вывод статистики по портфелю. Если заданы опции -r то выводится статистика только для указанных корней.

  • -xDEF - Выбор корней. Если опция не указана то выводится статистика для всех корней. Если указана опция -r то эта опция игнорируется.

    • all - Все корни.

    • default - Только корни помеченный «по умолчанию».

  • -rROOT - Показывать статистику только для указанных корней.

cleandb

--cleandb

Очищает БД от старых записей (старые корни которые уже удалены).

help

--help

или:

-h
orили

–usage

Отображает справку о программе.

version

--version

Показывает версию программы.

author

--author

Отображает автора программы.

license

--license

Отображает лицензию.

about

--about

Отображает описание программы.

debug

--debug {name ...}

Включает логгирование и вывод отладочной информации в файл лога и вызывает функцию _debug. Только для целей отладки. Команда должна быть первой в списке параметров. Если дано имя то вызывается только эта функция («_test_name») если такая существует.

Предупреждение

Правильные тесты могут быть сделаны только в папке с исходниками. В скопированных файлах ( например с помощью –dist ) некоторые тесты могут выполнятся ошибочно.

Общие опции

Эти опции могут использоваться со всеми командами.

v

-vLEVEL

Устанавливает уровень детализации отчета -1 … 5. По умолчанию используется 3.

  • -1 - Не выводить отчет, тлолько лог файл.

  • 0 - Выводить только глобальные ошибки.

  • 1 - Очень маленький вывод только об успехах и об ошибках.

  • 2 - Как 1 но еще в добавок о конфликтах.

  • 3 - Нормальный вывод. Общая информация, ошибки, конфликты, предупреждения.

  • 4 - Большой вывод отчета - как 3 но еще все операции с файлами в процессе работы.

  • 5 - Огромный вывод отчета. Как 4 все логи, только без отладочной информации.

l

-lFLAG

Разрешает 1 или запрещает 0 логирование. FLAG может быть 0 или 1. По умолчанию 1.

t

-tFLAG

Разрешает 1 или запрещает 0 вывод отладочной информации в лог файл. FLAG может быть 0 bkb 1. По умолчанию 1.

c

-cFLAG

Разрешает 1 или запрещает 0 использование цвета в консоли. По умолчанию 1.

m

-mFLAG

Разрешает 1 или запрещает 0 эмуляцию. FLAG может быть 0 или 1.

Реально не выполняется ни каких операций записи. Выполнет все действия как реальные команды но только не изменяет файлы. По умолчанию 0. Обычно эта опция используется с -l или -t для логирования результатов эмуляции.

Общая информация

Структура директории программы.

  • doc/ - Папка с документацией.

    • _build - Компилированная документация (в html).

      • api/ - API документация.

      • html/ - Руководство пользователя.

    • rst - исходники документации.

  • pybagfiles/ - Папка где хранятся все файлы портфеля.

  • pybag.db - База данных файлов, заархивированный при помощи gzip текст в utf-8.

  • pybag.cfg - Файл конфигурации в utf-8.

  • pybag.log - Файл лога в utf-8.

  • ...~ - Файлы заканчивающиеся тильдой «~» архивные копии.

PYBAG копирует все ваши файлы в директорию ./pybagfiles.

Файл базы данных.

Информация обо всех элементах в папке pybagfiles записывается в БД ./pybag.db - заархивированный при помощи gzip текст в кодировке utf-8. В БД сохраняется информация о файлах в портфеле: размер, дата модификации, crc32.

БД имеет следующий формат:

DB_VERSION_MARKER
DB_VERSION
F SIZE MDATE CRC32 path_to_file1_in_pybagfiles link_point1
F SIZE MDATE CRC32 path_to_file2_in_pybagfiles link_point2
... и так далее.

Все строки должны заканчиваться новой стирокой, где:

  • F - флаг:

    • d- директория,

    • f- файл,

    • s- символьная ссылка,

    • ''- не известный тип.

  • SIZE - размер файла в десятичной системе илиr 0 для директорий.

  • MDATE - дата модификации в формате YYYY/MM/DD-HH:mm:ss.

  • CRC32 - crc32 в десятичном знаковом целом числе или 0.

  • path_to_file - путь к файлу относительно портфеля в универсальном формате.

  • link_point - если это символьная ссылка то указывает точку ссылки, иначе -.

Файл конфигурации.

Это pybag.cfg в котором хранятся настройки и свойства.

Формат следующий:

  • [root] - общие свойства:

    • version = версия программы PYBAG.

    • ignore = игнорируемые файлы. По умолчанию = '“-нет игнорируемых. Шаблоны разделяются запятыми „,“ или регулярное выражение начинающиеся со знака „!“.

    • symlink = copy | copynoemul | ignore | ignorenoemul. (копировать, копировать без эмуляции, игнорировать, игнорировать без эмуляции). По умолчанию = copy.

    • compare = stat | crc32. Метод сравнения, stat - по размеру и дате модификации, по crc32. По умолчанию = stat.

    • mddelta = Минимально время различия дат когда они могут считатся не равными (число с плавающей точкой). По умолчанию 1.0 секунда.

    • nextid = Следующий свободный идентификатор (целое).

    • emulation = 0 | 1. Уровень эмуляции.

    • debug = 0 | 1. Уровень отладки.

    • logging = 1 | 0. Уровень логгирования.

    • verbosity = -15. Уровень детализации отображаемой информации.

    • colorize = 1 | 0. Использовать или нет цвет в консоли.

    • outfilter = строка формата. Строка формата отчета.

    • backup = 0 | 1. Маркер резервной копии.

    • r### = F path где F - флаг (f``=файл, ``d``=директория, ``s``=символьная ссылка), ``path - путь к корню ###, где ### идентификатор корня id. Последняя часть пути является начальной частью пути внутри портфеля.

  • [r###_pref] - локальные свойства для корня:

    • ignore = см. выше.

    • symlink = см. выше.

    • compare = см. выше.

    • backup = см. выше.

    • selectdefault = 1 | 0. Помечен корень как «по умолчанию».

  • [GUI] - Настройки графического интерфейса:

    • writecolsatexit = Записывать настройки колонок в файл конфигурации только если выключен режим эмуляции). 0 | 1. По умолчанию 0.

    • output - Показывать окно с выводом программы. 0 | 1. По умолчанию 1.

    • showtips - Показывать окно с советами при запуске. 0 | 1. По умолчанию 1.

    • column# - Настройки колонок. # Это порядковый номер колонки. Формат следующий: column0 = name, visible, width. Где cfgname - имя колонки, visible - видимость колонки 0 или 1, width - ширина колонки в пикселах ( от 0 до 2000). Имена колонок (name) могут быть следующие:

      • stateicon - Иконка состояния объекта.

      • actionicon - Иконка действий над объектом.

      • err - Пометка об ошибках (e - ошибка, c - конфлист, w - предупреждение).

      • forced - Форсированная операция (! - операция форсирована).

      • dir - Операции над объектом.

      • path - Путь объекта в портфеле.

      • desc - Описание.

      • type - Тип объекта

      • mdatedb - Дата объекта в базе данных, вещественный формат.

      • gmdatedb - Дата объекта в базе данных, GMT.

      • lmdatedb - Дата объекта в базе данных, местное время.

      • crc32db - Сумма CRC32 в базе данных.

      • sizedb - Размер объекта в базе данных, байт.

      • symlinkdb - Символьная ссылка в базе данных.

      • mdatebag - Дата объекта в портфеле, вещественный формат.

      • gmdatebag - Дата объекта в портфеле, GMT.

      • lmdatebag - Дата объекта в портфеле, местное время.

      • crc32bag - Сумма CRC32 в портфеле.

      • sizebag - Размер объекта в портфеле, байт.

      • symlinkbag - Символьная ссылка в портфеле.

      • mdateorigin - Дата объекта в оригинале, вещественный формат.

      • gmdateorigin - Дата объекта в оригинале, GMT.

      • lmdateorigin - Дата объекта в оригинале, местное время.

      • crc32origin - Сумма CRC32 в оригинале.

      • sizeorigin - Размер объекта в оригинале, байт.

      • symlinkorigin - Символьная ссылка в оригинале.

      • tymeshift - Сдвиг по времени.

    • filter_#### = 0 или 1. Фильтр с именем #### разрешить или запретить. Фильтры могут быть следующие:

      • filter_ok - синхронизация успешна,

      • filter_bag - Объект копируется в портфель,

      • filter_orig - Объект копируется в оригинал,

      • filter_del - Объект удаляется,

      • filter_ch - Объект изменен,

      • filter_new - Объект новый,

      • filter_err - Ошибка,

      • filterconf - Конфликт,

      • filter_warn - Предупреждение,

      • filter_forced - Действие над объектом форсировано,

      • filter_unch - Объект не изменен,

      • filter_file - Объект файл,

      • filter_dir - Объект директория,

      • filter_sym - Объект символьная ссылка,

      • filter_unk - Объект неизвестного типа,

      • filter_ign - Объект игнорируется.

      • filter_ts - Сдвиг по времени.