bKappa

Вітаємо на сторінці документації програми bKappa. Ця сторінка пояснює використання bKappa — вільного засобу для створення інкрементальних резервних копій. Щоб завантажити bKappa, перейдіть сюди.

1. Опис

bKappa є простим засобом для створення інкрементальних резервних копій ("бекапів"), який працює в багатьох операційних системах (зокрема, в Microsoft Windows, у різних дистрибутивах Linux та в Mac OS X). Проект bKappa має на меті заповнити прикру прогалину в асортименті програм для резервування та створити програму, яка б

  • була простою в налаштуванні та використанні;
  • створювала резервні копії указаної частини дерева каталогів у вказаному місці та копіювала лише ті дані, які змінилися з моменту останнього резервування;
  • зберігала давніші версії;
  • автоматично впорядковувала резервні копії на диску за часом їхнього створення;
  • не використовувала власного формату архівів, ба більше — не використовувала б архівів узагалі;
  • не вимагала інсталяції.

Усі ці риси втілено в bKappa, а такі незугарні речі як інсталяція — ні.

Після запуску bKappa створює піддиректорію, яка відповідає нинішній даті, в указаному місці (типово — у поточній директорії), копіює всі файли в усіх директоріях, перелічених у її налаштуваннях, але оминає ті, що підпадають під правила вилучення або не змінилися з моменту попереднього резервування. Тим часом ви можете спостерігати за перебігом цього процесу наживо у вікні програми (консолі).

2. Налаштування та використання

Зауваження: bKappa створено з думкою про досвідченого користувача. Ви маєте почуватися досить комфортно в командному рядку (в Windows) чи терміналі (деінде), адже це вам знадобиться, щоб змусити bKappa виконувати більшість її функцій.

Почнімо!

Найпростіший спосіб запустити bKappa — вказати на неї інтерпретаторові мови Python (перевірено версії 2.5.x та 2.6.x), наприклад,

$ python backup.py

Якщо ви хочете запускати нескомпільовану програму у Windows, ви можете скористатися тим, що комплект bKappa містить саме враз компонентів мови Python. Зайдіть до директорії bkappa-1.x\source і використайтеrun.bat, щоб запустити bKappa у такий спосіб.

Windows не забезпечує інтерпретатором Python, тож якщо ви не хочете його встановлювати або вдаватися до вказаного вище способу, що запустити програму, в дистрибутиві є два .EXE-файли, готові до використання. Вони мають назву bKappa-eval.exe та bKappa-noneval.exe. Різницям між ними поягає у способі, в який вони зберігають налаштування: bKappa-eval.exe використовує "оброблюваний" формат, тоді ж як bKappa-noneval.exe — "необроблюваний". Якщо ви хочете створити власні виконувані файли bKappa, використайте buildall.bat у bkappa-1.x\source, щоб побудувати їхній набір із чинної версії початкового коду.

Ось перелік опцій командного рядка, які ви можете задати bKappa:

-v, --verbose         показувати всі повідомлення (типово)
-q, --quite           показувати лише попередження та помилки наприкінці виконання
-s FILE, --settings=FILE
                      вказує файл налаштувань
-e, --eval            вживати "оброблюваний" (зі структурами Python)
                      файл налаштувань (типово)
-n, --noneval         вживати "необроблюваний" файл налаштувань
-l, --savelog         зберегти усі повідомлення в файл
-m, --merge           об'єднувати резервні копії, зроблені в один день
                      (переписуючи давніші файли)
-r RESTFILE, --restore=RESTFILE
                      відновлює резервну копію (опціями для резервування
                      буде знехтувано)
-w, --overwrite       переписувати файли під час відновлення
                      (типово: ні)
-o OUTPUTDIR, --output=OUTPUTDIR
                      відновлює файли до заданої директорії замість
                      їхнього початкового місця розташування
-f, --full            виконати повне, неінкрементальне резервування
                      (небажано, хіба що вам це справді треба)

Бажаний спосіб налаштувати bKappa залежить від того, чи ви вмієте програмувати мовою Python — принаймні трохи. Якщо так, читайте рекомендований спосіб у розділі 2.1, якщо ні — можете перейти до 2.2. Утім, найкращим буде, якщо ви прочитаєте обидва розділи, а тоді вирішите, який спосіб для вас найпридатніший.

2.1. Налаштування початкового коду та bKappa-eval.exe

Спершу — початковий код. Відкрийте backup.py у придатному текстовому редакторі та прокрутіть текст вниз доки ви не рядки такого вигляду:

# [S]ettings are below this point
backup_dirs = [
(joinpath(u"C:\\Documents and Settings", environ['USERNAME'], "My Documents"), \
[r'*\Downloads\*']),
(joinpath(u"C:\\Documents and Settings", environ['USERNAME'], "Desktop"), []),
]
destination_root = getcwd()
# Hereby the settings end

Це налаштування. Як бачете, список backup_dirs містить набори параметрів для директорій My Documents та Desktop поточного користувача, якого визначають зі змінної середовища USERNAME. Другим елементом у наборі даних є список винятків копіювання. Файли, повне розташування яких підпадає принаймні під один з шаблонів, буде виключено з резервної копії (шаблони порівняння такі самі, як стандартні шаблони файлових імен у командному рядку). Змінна destination_root — «домашня директорія» резервних копій, в якій для кожної резервної копії програма створює піддиректорії. Типово вона вказує на поточну директорію.

"Оброблюваний" файл налаштувань (який використовує bKappa-eval.exe) має схожу будову — він дозволяє тільки вказувати директорії, резервні копії належить створювати, та винятки, але не destination_root:

(joinpath(u"C:\\Documents and Settings", environ['USERNAME'], "My Documents"), [r'*\Downloads\*'])
(joinpath(u"C:\\Documents and Settings", environ['USERNAME'], "Desktop"), [])

Зважте на брак коми наприкінці кожного рядка.

Для того, щоб bKappa-eval.exe помітив такий файл, вам потрібно назвати його settings.e та помістити його у тій самій директорії, що й сам .EXE-файл. Ви можете також використати його з backup.py. Для цього наберіть команду

$ python backup.py -s settings.e -e

або

$ python backup.py --settings=settings.e --eval

2.2. Використання bKappa-noneval.exe

bKappa-noneval використовує інший, помітно простіший формат файла налаштувань. Її конфіґурація міститься у файлі settings.ne — "необроблюваному" файлі налаштувань. Оскільки (на відміну від попереднього методу) налаштування не містять безпосередньо виконуваного програмного коду, його також можна вважати безпечнішим.

Типовий файл settings.ne виглядає так:

C:\Documents and Settings\User\My Documents|*\Downloads\*|
C:\Documents and Settings\User\Desktop|

Першим, що ви побачите на кожному рядку перед першої вертикальною рискою ("|"), є шлях. Він указує директорію, яку належить скопіювати. Після нього йдуть шаблони виключення файлів. Шаблон, вказаний у першому рядку, виключає з резервної копії "Моїх документів" всі файли з C:\Documents and Settings\User\My Documents\Downloads, C:\Documents and Settings\User\My Documents\Stuff\Downloads, C:\Documents and Settings\User\My Documents\Misc\Downloads тощо.

Якщо, наприклад, ви не хочете мати тимчасових файлів *.TMP у резервній копії директорії My Documents, але ви також не хотіли б резервувати завантаження, вам треба змінити перший рядок файла на такий:

C:\Documents and Settings\User\My Documents|*\Downloads\*|*.tmp|

Шаблони можна додавати досхочу, але рядок завжди має закінчуватися символом "|".

Щоб використати settings.ne (чи файл такого ж формату) з backup.py, наберіть

$ python backup.py -s settings.ne -n

або

$ python backup.py --settings=settings.ne --noneval

у командному рядку.

3. Як працює програма

bKappa послідовно обходить усі директорії, вказані у налаштуваннях, та копіює їхній вміст до нової піддиректорії в указаному місці, зберігаючи атрибути та метадані. Назву піддиректорії призначення, в яку потрапить ця конкретна резервна копія, визначає поточна дата (якщо копія з такою датою вже існую, тоді — дата й час), тобто, якщо місце призначення — /backup, піддиректорія може називатися /backup/2009-04-20/, якщо це D:\backup, вона може зватися D:\backup\2009-04-20\ тощо. Програма копіює лише ті файли, які оновлено з моменту попереднього резервування та які не підпадають під критерії виключення для обраної директорії (під шаблони для шляху/імені файла). Після копіювання ім’я та розташування кожного файла потрапляє до списку відновлення, який потім можна використати для відновлення резервної копії. Якщо файл не змінився з минулого разу, bKappa додає до списку посилання на його версію у попередній резервній копії, розташованій у тій самій директорії призначення. Після завершення резервування bKappa записує список відновлення на диск.

З версії 1.2, якщо ви створюєте кілька резервних копій в один день, новіші файли не переписують давніші, а натомість зміни з моменту останнього копіювання потрапляють в іншу директорію, в імені якої також позначено час, як-от 2009-04-20T174301. Тут це означає, що резервне копіювання почалося о сімнадцятій сорок три.

4. Відновлення

bKappa може відновити резервну копію автоматично за умови, що ви маєте всі попередні версії, на які ця резервна копія посилається. Зважте, що це може переписати ваші файли їхніми давнішими версіям, тож стережіться!

Відновити файли через інтерпретатор мови Python у Unix-подібній операційній системі ви можете так:

$ python backup.py -r 2007-04-20/restore.dat

Це відновлює файли там, де вони були, коли виконано це резервування, але не переписує тих фалів, які зараз там існують. Якщо ви хочете зробити так у скомпільованії версії bKappa для Windows, наберіть у командному рядку таке:

bkappa-noneval.exe -r 2007-04-20\restore.dat

Ви можете використати будь-який з програмних файлів (bkappa-noneval.exe або bkappa-eval.exe), адже тип налаштувань має значення під час відновлення.

Щоб переписати файли, що вже існують (обережно!), зробіть таке:

$ python backup.py -r 2007-04-20/restore.dat -w

або таке

bkappa-noneval.exe -r 2007-04-20\restore.dat -w

Якщо ви хочете відновити файли у директорію, відмінну від їхнього початкового розташування, використайте команду

$ python backup.py -r 2007-04-20/restore.dat -o ~/restored

або

bkappa-noneval.exe -r 2007-04-20\restore.dat -o E:\restores

Можливо, ви помітили, що по створенні резервної копії bKappa записує файли restore.bat та restore.sh в її директорію. Це сценарії, якими ви можете відновити резервну копію, не запускаючи програми. Такий спосіб може згодитися тоді, коли ви не маєте bKappa напоготові. Зверніть увагу, однак, що у Windows типовий інтерпретатор командних файлів cmd.exe не підтримує UTF-8 у командних файлах, тож restore.bat варто запускати лише тоді, коли ви цілком певні, що у поточній резервній копії та в усіх попередніх копіях, на які вона посилається, назви містять лише символи ASCII (тобто в них немає, зокрема, і кирилиці). Якщо ви не певні, не запускайте сценарій: він не відновить усіх файлів та цілком може лишити на вашому диску купу нових директорій, які важко видалити. (Якщо таке вже трапилося, знайте, що ці директорії можна видалити, попередньо їх перейменувавши.)

5. Буде виправлено/зроблено

В останньому релізі (версія 1.3b) не виявлено помітних баґів, але зверніть увагу на попередній розділ, вказано застереження щодо використання згенерованих сценаріїв відновлення у Windows. Список пропонованих функцій, які може бути втілено в наступних версіях програми, зараз такий:

  • Підтримувати стиск для окремих файлів/типів файлів. (Навряд чи буде реалізовано, адже це суперечить ідеї "простого формату" резервних копій.)
  • Створювати список файлів, знищених від останнього резервування. З версії 1.3 непотрібне через повний список присутніх файлів.
  • Мати засіб для автоматичного відновлення. Втілено у версії 1.3.
  • Динамічно підрізати дерево каталогів (іншими словами, не переглядати те, що однаково буде вилучено з резервної копії). Втілено у версії 1.2.

Якщо ви маєте ідеї, які можуть покращити цю програму, повідомте мені про них.

6. Авторське право, подяки й контакти

Авторське право на bKappa має Д. Богдан, copyright 2009-2012. bKappa — вільне програмне забезпечення. Ви можете знайти умови його ліцензування у файлі COPYING всередині дистрибутива або онлайн на сторінці проекту GNU.

Скомпільовні релізи bKappa використовують 7-Zip та BatExe. Ці програми вільні. Перегляньте www.7-zip.org та batexe.sourceforge.io відповідно, щоб отримати їхній початковий код.

Ви можете зв’язатися зі мною через мій профіль на SourceForge.