Основы PYBAG¶
Перед началом использования PYBAG хорошо бы узнать о принципах работы с программой.
PYBAG синхронизирует файлы между оригиналами-исходниками (origin) и портфелем (bag).
- origin
Это исходное расположение оригинальных файлов.
- bag
В это место копируются все файлы которые вы синхронизируете.
Например оригинал (origin) - это папка на вашем домашнем компьютере, портфель (bag) - папка на флэшке. Для примера давайте рассмотрим папки на домашнем компьютере:
/home/user/docs1/...
- всякие документы.
/home/user/memo.txt
- файл с напоминаниями который вы часто редактируете (каждый день например).
/home/user/news/...
- полученные новости, которые вы читаете в свободное время.
Все эти папки и файлы (docs1
, memo.txt
, news
) называются оригиналами (origin).
Также в PYBAG есть корни (root) - это название оригиналов (исходных папок и файлов) которые добавлены
в портфель (bag). Если вы добавляете ёё/home/user/docs1ёё для синхронизации то это будет называется
корень (root) «docs1». /home/user/memo.txt
будет называться корнем (root) «memo.txt».
И так далее.
Портфель имеет следующую структуру файлов:
pybagfiles/
- Директория в которую все файлы сохраняются в портфель.
pybag.db
- База данных файлов.
pybag.cfg
- Файл конфигурации в кодировке utf-8.
pybag.log
- Файл с логом программы в кодировке utf-8.
...~
- Файлы заканчивающиеся на тильду «~» - резервные копии.
Все корни и их содержимое (синхронизированные файлы) помещаются в подпапке pybagfiles
.
На пример корень «docs1» находится тут /flash/bag/pybagfiles/docs1
.
Все файлы из оригинала когда вы их синхронизируете сохраняются в соответствующие корни.
И если вы хотите работать с файлами в портфеле то вы должни искать необходимые файлы
по следующему пути /flash/bag/pybagfiles/"rootname"/...
В портфеле структура ваших файлов будет такой:
/flash/bag/
...........pybag.py
...........pybagfiles/
......................docs1/
............................ ... any files
............................ ... any files
......................news/
............................ ... any files
............................ ... any files
......................memo.txt
...........pybag.cfg
...........pybag.db
Синхронизация в PYBAG происходит в несколько шагов:
- reading
Чтение файлов в оригинале, в корнях в портфеле и в базе данных (база данных PYBAG сохраняет информацию о ваших файлах).
- comparing
PYBAG сравнивает файлы друг с другом и решает что делать - копировать, удалять или оставить как есть.
- synchronization
В этом шаге выполняются все действия которые приняты при сравнении (копировать, удалять, …).
- clearing
Очистка базы данных от игнорируемых и удаленных файлов.
- saving
Сохранение информации о файлах в базе данных.
Когда вы нажимаете кнопку «Сравнить» (Compare) то происходит чтение и сравнение. При нажатии «Синхронизировать» (Synchronize) происходит синхронизация, очистка и сохранение. Если вы нажмете «Синхронизировать» (Synchronize) без сравнения то все необходимые шаги будут сделаны автоматически. В процессе сравнения и синхронизации PYBAG может писать информацию о своей работе в лог-файл (так же он может писать туда и отладочную информацию). Когда PYBAG сравнивает файлы могут возникнуть различные конфликты. Например если файл был модифицирован и в портфеле и в оригинале тоn PYBAG не будет знать что с ним делать. В этой ситуации файл будет помечен как конфликтный ( conflict ) и вы сможете посмотрев его решить что с ним делать. Так же при не серъезных ситуациях (например если файл и в портфеле и в оригинале был удален а в базе данных остался) файл помечается предупреждением ( warning ). В критических ситуациях (например при ошибках чтения, записи файлов) файл помечается ошибкой ( error ). При просмотре операций которые определил PYBAG после сравнения вы можете их изменять - форсировать (force). Например если при сравнении возник конфликт то вы можете в ручную указать что делать с файлом - куда копировать, удалить или не изменять. Файлы в PYBAG сравниваются по статической информации ( statistic ) - (размер, дата модификации) и если вы включили дополнительно по контрольной сумме crc32 (по контрольной сумме файлы сравниваются только в случае равенства других параметров). PYBAG может синхронизировать директории, файлы и символьные ссылки. Символьные ссылки поддерживаются не на всех операционных ситемах но PYBAG может эмулировать символьные ссылки если ОС их не поддерживает. Эмуляция символьных ссылкок происходит так: создается текстовый файл с таким же именем как символьная ссылка и в него записывается специальная информация о ссылке.
Вы можете выбрать как синхронизировать символьные ссылки:
c
,copy
- копировать ссылки и эмулировать их при необходимости.
cn
,copynoemul
- копировать ссылки, но не эмулировать их (ОС должна их поддерживать).
i
,ignore
- игнорировать ссылки и эмулировать для проверки специальных файлов ссылок.
in
,ignorenoemul
- игнорировать и не проверять на эмуляцию.
Корни в PYBAG могут быть следующих типов:
standart - «стандарт» - это все корни по умолчанию. В таких корнях файлы можно изменять как в портфеле так и в оригиналах, все измнения будут отслеживаться.
backup - «резервный» - это специальный режим для резервных копий. В этом режиме отслеживаются измнения только в оригиналах. Этот режим до 2х раз быстрее стандартного. Если вы всетаки изменили файлы в портфеле то нужно воспользоваться специальным режимом синхронизации для резервных копий - «полная синхронизация» ( Backup full synchronization ) при синхронизации.
Проблема летнего/зимнего времени.
При некоторых условиях (например при синхронизации Windows и FlashDrive с ситемой FAT) вы можете наблюдать проблему летнего/зимнего времени. Детали следующие - вечером вы синхронизировали все ваши файлы, а ночью перевели летнее время на зимнее или наоборот. С утра вы обнаруживаете что все ваши файлы отмечены как изменившиеся (время модификации файлов в портфеле и оригиналах отличается примерно на 3600 секунд)!!! Теперь для синхронизации будут копироваться все ваши файлы. Это плохо копировать все файлы - они ведь не менялись на самом деле! Вы можете использовать операцию time shift (сдвиг по времени) вместо копирования всех файлов. Сдвиг по времени только изменяет дату модификации (и доступа) у файла. Time shift to bag сдвиг времени в портфеле, означает что у всех файлов будет установлена дата модификации такая же как и у оригинальных файлов. Time shift to origin сдвиг времени оригиналов, означает что у всех файлов в оригинале дата модификации будет установлена такой же как и у файлов в портфеле.
В коммандном интерфейсе программы вы можете использовать опцию -y для сдвига по времени в ручную либо использовать действие tsbag, tsorigin, tsreset для установки (сброса) сдвига по времени по шаблону. В графическом интерфейсе вы можете использовать меню для установки сдвига по времени на основе шаблона. Установка сдвига по времени на основе шаблона означает что вы указываете файл который нуждается в корректировке даты модификации и он используется в дальнейшем как шаблон - разница дат модификации этого файла (портфеля и оригинала) используется и при обработке остальных файлов.
PYBAG имеет несколько настроек процесса синхронизации.
- verbosity
Устанавливает уровень детализации отчета -1 … 5. По умолчанию используется 3.
-1 - Ничего не выводить. Только можно писать лог-файл.
0 - Толко глобальные ошибки.
1 - Мало сообщений, только об успехе или ошибке.
2 - Как 1 но еще сообщает и о возникшых конфликтах.
3 - Нормальная детализация. Общая информация, ошибки, конфликты, предупреждения.
4 - Много информации. Как 3 и в добавок про операции над файлами.
5 - Очень много информации. Как 4 и еще различная лог-информация.
- Emulation mode
Если этот режим эмуляции включен то PYBAG не будет производить ни каких изменений в файлах и конфигурационных файлах. Режим эмуляции удобен для тестирования.
- Logging
Разрешает или запрещает писать лог-файл.
- Debug logging
Разрешает или запрещает писать в лог-файл отладочную информацию.
- Auto Conflict resolution
Автоматическое разрешение конфликтов с файлами при сравнении. Могут быть следующие правила:
bag - при конфликтах писать измененые файлы в портфель.
origin - писать измененые файлы в оригиналы.
newer - использовать более новые файлы.
older - использовать более старые файлы.
no - не разрешать конфликты автоматически (По умолчанию).
bagall - переносить все изменения в портфель (удалять если нужно).
originall - переносить все изменения в оригиналы (удалять если нужно).
bagcopy - копировать все измененые файлы в портфель, но ничего не удалять из портфеля.
origincopy - копировать все измененый файлы в оригинал, но из оригинала ничего не удалять.
- Modifycation time delta (MDDELTA)
Это разница между датами модификации сравниваемых файлов. Если разница меньше чем MDDELTA то файлы считаются не изменными.
- Backup full synchronization
Специальный режим для синхронизации резервных корней. В этом режиме будут отслежены изменения не только в оригинале но и в портфеле тоже.