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).
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
andorigin
(для примера-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
- Показывать статистику только для указанных корней.
debug¶
--debug {name ...}
Включает логгирование и вывод отладочной информации в файл лога и вызывает функцию _debug
.
Только для целей отладки. Команда должна быть первой в списке параметров.
Если дано имя то вызывается только эта функция («_test_name») если такая существует.
Предупреждение
Правильные тесты могут быть сделаны только в папке с исходниками. В скопированных файлах ( например с помощью –dist ) некоторые тесты могут выполнятся ошибочно.
Общие опции¶
Эти опции могут использоваться со всеми командами.
v¶
-vLEVEL
Устанавливает уровень детализации отчета -1 … 5. По умолчанию используется 3.
-1
- Не выводить отчет, тлолько лог файл.
0
- Выводить только глобальные ошибки.
1
- Очень маленький вывод только об успехах и об ошибках.
2
- Как1
но еще в добавок о конфликтах.
3
- Нормальный вывод. Общая информация, ошибки, конфликты, предупреждения.
4
- Большой вывод отчета - как3
но еще все операции с файлами в процессе работы.
5
- Огромный вывод отчета. Как4
все логи, только без отладочной информации.
Общая информация¶
Структура директории программы.¶
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
- размер файла в десятичной системе илиr0
для директорий.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
=-1
…5
. Уровень детализации отображаемой информации.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
- Сдвиг по времени.