MediaWiki Content Replicator/Инструкция по эксплуатации

Материал из Project D8
Перейти к: навигация, поиск

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

  1. можно просто передать программе список параметров, или
  2. можно передать ей имя файла, из которого нужно прочитать этот список.

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

java -jar "MediaWiki_Content_Replicator.jar" @ TaskFileName.txt cp1251

Здесь первый аргумент — символ «собака», второй и третий — соответственно имя и кодировка текстового файла, из которого нужно взять список параметров.

-Xmx1500m означает, что программе выделится до 1500 МБ heap-памяти. Это тот максимум, который доступен в 32-разрядной версии JRE. Если у вас установлена 64-разрядная JRE, это значение рекомендуется увеличить до 4000-5000 МБ, чтобы заранее избежать проблем с обработкой очень больших wiki-проектов.

Пример такого файла: SelectNamespaces.txt

ConsoleEncoding=Cp866

ProjectName=TestProject
Action=SelectNamespaces
Set=All

В некотором смысле ни один из параметров не является обязательным: соответствующее значение может быть прочитано из файла проекта, или использовано значение «по умолчанию».

Содержание

Общие параметры

Здесь перечислены параметры, общие для всех режимов работы программы.

Параметр Описание Значение по умолчанию
ProjectName Имя проекта, над которым будут выполняться действия. В сущности это имя папки, в которой хранятся все данные проекта. Пустая строка: не использовать для проекта отдельную папку, хранить все его файлы и папки в текущей папке.
SourceURL URL wiki-сайта, подлежащего клонированию. Если удалось открыть проект, то прочитать URL оттуда (для этого проект должен был быть хотя бы один раз сохранен с установленным SourceURL). Если в проекте SourceURL также не задан, или сам проект отсутствует, то будет пустая строка и в дальнейшем ошибка.
PagesPerRequest Сколько страниц обрабатывать за одно обращение к wiki-движку. Не рекомендуется ставить больше 50 — будут ошибки. 50
ProjectSaveInterval Период автосохранения проекта. Задается в секундах. 300 секунд = 5 минут
ConsoleEncoding Кодировка текста, выводимого в консоль. В Windows рекомендуется использовать «Cp866» для корректного отображения кириллицы. Пустая строка: использовать системную кодировку.

Проекты

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

Проект представляет собой папку, в которой располагается такая структура:

  1. База данных проекта — хранится в файле project.dat, содержит список загружаемых страниц, разнообразные метаданные страниц и их ревизий, и т. д. При выполнении с проектом каких-либо действий обычно перезаписывается, при этом предыдущая версия сохраняется в файле project.dat.bak — на тот случай, если основная окажется повреждена (например, в результате сбоя в процессе работы программы).
  2. Список пользователей — хранится в файле users.ini. Имена пользователей в алфавитном порядке перечислены на отдельных строчках.
  3. Список пространств имен. Файл namespaces.ini состоит из двух частей. Первая часть перечисляет все пространства имен проекта в формате NSID = Имя пространства имен. Вторая часть содержит код для LocalSettings.php, который добавляет в проект нестандартные пространства имен (если они есть).
  4. Список страниц. Файл pages.ini разделен на секции, каждая из которых соответствует пространству имен. Имена секций имеют формат [NSID:Имя пространства имен]. Каждая секция содержит список страниц в формате Имя страницы -> PageID. Страницы перечислены в алфавитном порядке.
  5. Список URL медиафайлов — хранится в файле images.ini. Имена и URL медиафайлов в алфавитном порядке перечислены на отдельных строчках в формате Имя медиафайла @ время создания ревизии -> URL для загрузки.
  6. Содержимое страниц. Wiki-текст страниц хранится в ZIP-архивах по следующему пути: Папка проекта/wiki/Пространство имен/Имя страницы.PageID.zip/RevID.txt Страницы из основного пространства имен хранятся в папке _default, отсутствующие страницы хранятся в папке _missing.
  7. Медиафайлы. Текущие версии медиафайлов хранятся по следующему пути: Папка проекта/images/Имя файла.расширение. Архивные версии медиафайлов располагаются в отдельной папке: Папка проекта/images/archive/время создания ревизии ! имя файла.расширение

Специальных действий для создания проекта не требуется: в случае необходимости программа создаст нужные папки и файлы сама.

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

Таким образом, создание локальной копии некоего wiki-сайта распадается на несколько последовательных вызовов программы с разными параметрами; каждый раз на диске сохраняется новая порция данных, и обновляется файл проекта. В большинстве случаев порядок этих вызовов имеет значение.

Получение списка пользователей

ProjectName=TestProject
SourceURL=projectd8.org
Action=ListUsers

SourceURL: поскольку это действие выполняется одним из первых, файл проекта может еще не существовать, и параметр SourceURL нужно указывать явно.

Список пользователей (в виде отдельного файла) может понадобиться при импорте дампа в другой wiki-проект. Дело в том, что если на момент импорта страницы еще не существует пользователя, ее создавшего, то в истории правок будет ссылка не на страницу пользователя, а на его вклад, что не очень хорошо. Если же сначала тем или иным образом создать на сайте всех нужных пользователей, то при импорте история правок будет выглядеть так, как будто все эти пользователи на самом деле создавали здесь эти страницы.

Получение списка пространств имен

ProjectName=TestProject
SourceURL=projectd8.org
Action=ListNamespaces

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

SourceURL: поскольку это действие выполняется одним из первых, файл проекта может еще не существовать, и параметр SourceURL нужно указывать явно.

Выбор пространств имен для загрузки

ProjectName=TestProject
Action=SelectNamespaces
Set=All

По умолчанию после получения списка пространств имен все они выбраны для загрузки. Этот режим позволяет изменить выбор:

  • Set=0|1|4|5 приведет к загрузке только страниц из основного пространства имен (0), их обсуждений (1), страниц проекта (4) и их обсуждений (5)
  • Set=All приведет к загрузке страниц из всех пространств имен

Получение списка страниц

ProjectName=TestProject
Action=ListPages

Это действие является обязательным: программа будет запрашивать содержимое только тех страниц, которые будут перечислены в этом списке.

Если какое-либо пространство имен не содержит страниц, программа несколько раз выдаст сообщение об ошибке «empty result» — в данном случае это нормально и не влияет на построение списка (возникновение этой ошибки на пространстве имен, заведомо содержащем страницы, говорит либо о проблемах с соединением, либо о перегрузке сайта).

Подготовка инкрементального обновления

ProjectName=TestProject
Action=PrepareUpdate

Если некоторые страницы проекта уже были загружены, это действие проверит, не содержат ли они новых правок, и если содержат, то пометит эти правки для дозагрузки.

Проверка целостности локальной копии

ProjectName=TestProject
Action=Verify

Этот режим поможет выявить и исправить известные проблемы с локальной копией. Каждая страница проверяется по нескольким критериям, и в случае обнаружения несоответствий выдается название страницы и код ошибки:

Код ошибки (hex) Описание ошибки
0 Страница в порядке, ошибок нет.
1 Страница была ошибочно помечена как загруженная.
2 Отсутствует архив с ревизиями страницы.
4 В архиве отсутствует одна из ревизий страницы.
100 Найден потерянный архив с ревизиями страницы.
200 Страница была ошибочно помечена как отсутствующая.

Если для страницы обнаруживаются ошибки с кодами от 0x1 до 0xFF, эта страница помечается для повторной загрузки.

Загрузка страниц

ProjectName=TestProject
Action=GetPages

В этом режиме происходит собственно загрузка страниц со всеми их ревизиями.

Вывод списка URL медиафайлов

ProjectName=TestProject
Action=PrintImageURLs

Это действие выводит в текстовый файл список URL, по которым будут загружаться размещенные в wiki-проекте медиафайлы (картинки и прочие). Для некоторых проектов имеет смысл изучить этот файл, и при необходимости исправить URL для загрузки файлов.

Исправление списка URL медиафайлов

ProjectName=TestProject
Action=FixImageURLs
FindText=projectd8.org
ReplaceWith=77.108.215.92

Если просмотр списка URL для загрузки медиафайлов выявил какие-либо ошибки, можно воспользоваться этим режимом, чтобы ошибки исправить. Для этого нужно указать два параметра:

  • FindText — что искать в URL
  • ReplaceWith — на что заменить

После выполнения этого действия можно повторно сгенерировать список URL, чтобы убедиться, что все изменения выполнены правильно.

Загрузка медиафайлов

ProjectName=TestProject
Action=DownloadImages

В этом режиме происходит загрузка медиафайлов, размещенных в wiki-проекте (картинок и прочих), со всеми их ревизиями.

Дамп одиночной страницы

ProjectName=TestProject
Action=ExportSinglePage
Title=MediaWiki Content Replicator/Инструкция по эксплуатации
OutputFile=dump.xml

или, что то же самое

ProjectName=TestProject
Action=ExportSinglePage
PageID=1396
OutputFile=dump.xml

Это действие создает XML-дамп одиночной страницы со всей историей правок. Страницу можно указать либо по имени (параметр Title), либо по идентификатору (параметр PageID). Полученный файл (имя которого задается в параметре OutputFile) можно использовать для импорта страницы в другой Wiki-проект.

Дамп всех страниц

ProjectName=TestProject
Action=ExportPages
OutputFile=dump.xml.bz2

Собственно то, ради чего все затевалось: создание XML-дампа всех загруженных страниц. Обязательный параметр только один — имя создаваемого файла; дамп упаковывается в архив BZip2, поэтому желательно использовать расширение .xml.bz2. После создания этот дамп можно использовать для импорта всех страниц в другой Wiki-проект.

По умолчанию используется инкрементальная схема: при повторном создании дампа в него войдут только те страницы и ревизии, которые изменились с момента создания предыдущего дампа. С этим связан параметр AllRevisions:

  • при AllRevisions=true создается инкрементальный дамп для всех ревизий с историей правок;
  • при AllRevisions=false создается мини-дамп, содержащий текущую ревизию каждой страницы без истории правок, независимо от того, входила ли эта страница (ревизия) в один из предыдущих дампов.

После того, как процесс завершится (а с учетом упаковки в BZip2 он может идти очень долго), программа выдаст сообщение следующего вида:

Exported 2009 revisions in 1462 pages
Total of 4419561 bytes written, CRC32 is 5D0A1459
         0 errors occurred in the process
  • в первой строчке указано количество ревизий и страниц, вошедших в дамп;
  • во второй строчке указан размер дампа в неупакованном виде и его контрольная сумма;
  • в третей строчке указано количество ошибок, произошедших при создании дампа (должно быть 0).

Эту информацию рекомендуется сохранить, поскольку в дальнейшем она может пригодиться для проверки целостности дампа.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Список
Инструменты