Manual:Backing up a wiki/ru

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

Обзор
MediaWiki хранит важные данные в двух местах:
 * База данных: страницы и их содержимое, пользователи и их настройки, метаданные, индекс поиска и другое
 * Файловая система: файлы конфигурации, файлы тем, расширения, изображения (включая удаленные изображения) и другое

Необходимо перевести MediaWiki в режим read-only прежде, чем создавать резервную копию — смотри раздел. Это будет гарантией того, что все части вашей резервной копии непротиворечивы (некоторые из установленных дополнений могут записывать данные в базу).



Передача файлов
Вам нужно выбрать способ для передачи файлов с сервера, где они находятся:


 * Неконфиденциальные данные вы можете просто опубликовать на archive.org или в каталог  вашего веб-сервера.
 * SCP (или WinSCP), SFTP/FTP или любой другой протокол передачи, который вы привыкли использовать.
 * Хостинг компания может предоставлять интерфейс файлового менеджера при помощи веб-браузера; свяжитесь с вашим провайдером.

База данных
Большинство критических данных Вики хранятся в базе данных. Если ваша вики в настоящее время отключена, можно сделать резервную копию её базы данных, просто скопировав файл базы данных.

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

Automysqlbackup
Смотри пакет в Debian:

Установка пакета:

Все ваши базы данных будут сохранены в /var/lib/automysqlbackup/

Резервное копирование вручную:

Восстановление базы данных:

Другие версии смотри на SourceForge.



Получение Mysqldump из командной строки
Наиболее удобный способ для создания файла дампа базы данных — это использовать стандартный инструмент mysqldump. Оно является приложением командной строки. Убедитесь, что используете правильные параметры, в противном случае могут возникнуть трудности при восстановлении базы данных. В зависимости от размера базы данных, создание дампа может занять значительное количество времени.

Сначала вставьте следующую строку в LocalSettings.php

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

Пример команды для запуска на Linux/Unix оболочке:

mysqldump -h hostname -u userid -p --default-character-set=whatever dbname > backup.sql

Изменяйте,  ,  , и   по мере необходимости. Все четыре можно найти в файле (LSP). может находится под ; по умолчанию localhost. может находится под,  может находится под , где он указан после. Если  не указан, mysqldump скорее всего, будет по умолчанию использовать utf8, или если используется более старая версия MySQL, latin1. Тогда как  может находится после. После запуска этой строки из командной строки mysqldump запросит пароль сервера (который можно найти после в LSP).

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

На выходе можно сразу создать архив gzip, чтобы уменьшить размер

mysqldump -h hostname -u userid -p dbname | gzip > backup.sql.gz

Некоторые новые версии MySQL могут выдавать ошибку, связанную с табличными пространствами и привилегией PROCESS. MediaWiki не использует табличные пространства. Решение состоит в том, чтобы добавить в команду опцию :

mysqldump --no-tablespaces -h hostname -u userid -p dbname | gzip > backup.sql.gz

Похожая команда может быть использована для создания XML файла, если добавить параметр.

mysqldump -h hostname -u userid -p --xml dbname > backup.xml

и сжать файл используя gzip

mysqldump -h hostname -u userid -p --xml dbname | gzip > backup.xml.gz

Дополнительные опции, которые следует рассмотреть при использовании mysqldump для резервного копирования, включают следующее.

Если вы не используете --single-транзакцию, то следует рассмотреть возможность использования опций --lock-таблиц и --add-блокировок.

В связи с неожиданным изменением в версиях MySQL 5.7.41 и 8.0.32 в феврале 2023 года опция --single-транзакции требовала для резервного копирования привилегий RELOAD или FLUSH_TABLES от пользователя. Проблема была исправлена в MySQL версий 5.7.42 и 8.0.33. Подробности см. в MySQL Bug 109685 и Ubuntu Bug 2003866.

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



Запуск mysqldump при помощи Cron
Cron — классический демон выполнения заданий в unix-подобных ОС. Cron позволяет пользователям создавать задания (на выполнение команд или скриптов), которые нужно выполнять в определённое время или даты.

Пример команды которую вы можете запустить через crontab выглядит так:  nice -n 19 mysqldump -u $USER --password=$PASSWORD $DATABASE -c | nice -n 19 gzip -9 > ~/backup/wiki-$DATABASE-$(date '+%Y%m%d').sql.gz понижает приоритет процесса.

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

Если Вы хотите добавить задание сохранения базы в планировщик Cron через Cpanel, то вы должны экранировать символ «%»

/usr/bin/mysqldump -u $USER --password=$PASSWORD $DATABASE -c | /bin/gzip > ~/backup/wiki-$DATABASE-$(date '+\%Y\%m\%d').sql.gz

В противном случае, Вы получите ошибку:

/bin/sh: -c: line 0: unexpected EOF while looking for matching `'' /bin/sh: -c: line 1: syntax error: unexpected end of file



Запуск mysqldump с помощью Systemd
Systemd унифицирует конфигурации и управление сервисами. Таймеры - это файлы модулей systemd, которые управляют служебными файлами или событиями. Таймеры могут использоваться в качестве альтернативы cron. Пример файлов блока systemd и сценария резервного копирования приведен ниже.

wiki-backup.timer
Следующий таймер запускает службу wiki-backup каждое утро в 5:10 утра.

$ cat /etc/systemd/system/wiki-backup.timer

[Unit] Description=Run the backup service once a day Documentation=...

[Timer] OnCalendar=*-*-* 05:10:00 RandomizedDelaySec=600 Persistent=true

[Install] WantedBy=timers.target

wiki-backup.service
Когда срабатывает таймер wiki-backup, вызывается служба. Сервис запускает скрипт, расположенный в каталоге.

$ cat /etc/systemd/system/wiki-backup.service

[Unit] Description=Run the backup service once a day Documentation=...

[Service] Type=oneshot User=root ExecStart=/sbin/wiki-backup

wiki-backup script
$ cat /sbin/wiki-backup


 * 1) !/usr/bin/env bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH
 * 1) Systemd adds random paths at times. Take full control of PATH.

wiki_password=...
 * 1) Read the backup password from conf or ini Failed

if MYSQL_PWD="${wiki_password}" \ mysqlcheck my_wiki --auto-repair --user=mwuser 1>/dev/null; then echo "Repair wiki database ok" else echo "Failed to repair wiki database" echo "Continuing anyways" fi
 * 1) Fix the wiki tables just in case. This step produces a lot of noise,
 * 2) so send stdout to /dev/null.

if ! systemctl stop apache2.service ; then echo "Failed to stop Apache service" echo "Continuing anyways" fi
 * 1) Disable the connection from Apache to MySQL for the dump

if mysql --version 2>&1 | grep -q -E 'mysqlspace:+Ver 8\.0\.32'; then echo "Using MySQL --lock-tables --add-locks options" mysql_lock_opt="--lock-tables --add-locks" else echo "Using MySQL --single-transaction option" mysql_lock_opt="--single-transaction" fi
 * 1) Lock option choice due to MySQL change at versions 5.7.41 and 8.0.32 in
 * 2) February 2023. See https://bugs.mysql.com/bug.php?id=109685 and
 * 3) https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/2003866.

if MYSQL_PWD="${wiki_password}" \ mysqldump --no-tablespaces \ ${mysql_lock_opt} \ --events --triggers --routines \ --add-drop-table --create-options \ --extended-insert \ --default-character-set=utf8 \ -u mwuser -h localhost my_wiki | gzip -q -v9 > /backup/wiki-backup.sql.gz ; then echo "Dump wiki database ok" else echo "Failed to dump wiki database" echo "Continuing anyways" fi

if ! systemctl start apache2.service ; then echo "Failed to start Apache service" echo "Continuing anyways" fi
 * 1) Re-enable connection from Apache to MySQL for the dump

exit 0

Таблицы
Некоторые выгружаемые таблицы имеют разную степень временности. Таким образом, для экономии места на диске (помимо сжатия gzip), можно не копировать данные из временных таблиц, хотя сами таблицы должны быть в дампе. Однако, при определенных обстоятельствах, необходимость перестраивать все эти данные может перевесить желание сэкономить дисковое пространство (например, на большой вики, где скорость восстановления имеет первостепенное значение).

Обратитесь в список рассылки — раздел «mysql5 binary schema» по данному вопросу.



Преобразование кодировки Latin-1 в UTF-8
Смотри раздел страницы обновления для того, чтобы узнать, как это делается. Также смотри страницу обсуждения для того, чтобы узнать, как работать с кодировками в целом.

PostgreSQL
Вы можете использовать утилиту  для резервного копирования MediaWiki на PostgreSQL. Например:

pg_dump mywiki > mywikidump.sql

скопирует базу  в файл mywikdump.sql.

Чтобы восстановиться из копии:

psql mywiki -f mywikidump.sql

Вы можете также скопировать глобальную информацию, например, пользователей базы:

pg_dumpall --globals > postgres_globals.sql

phpMyAdmin
Переведите свою вики в режим только для чтения, добавив  в LocalSettings.php.

Найдите базу данных вики в LocalSettings.php. Вот пример того, как это выглядит в LocalSettings.php:

 Откройте браузер по вашей ссылке phpmyadmin, авторизуйтесь, выберите базу данных вики. Выберите Экспорт.

Убедитесь, что все элементы в разделе «Экспорт» выделены, а также убедитесь, что выделена структура (важно сохранить структуру таблицы).

При необходимости установите флажок Добавить DROP TABLE, чтобы удалить существующие ссылки при импорте.

Убедитесь, что данные проверены.  Выберите архивный файл. Затем нажмите Вперёд и сохраните файл резервной копии.  Удалите  из LocalSettings.php</li> </ol>

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

<span id="External_links">

Внешние ссылки

 * Резервное копирование базы данных

HeidiSQL (alternative to phpMyAdmin)
HeidiSQL — похожая на phpMyAdmin, но менее строгая версия бесплатного phpMyAdmin. HeidiSQL требует прямого подключения к базе данных, в то время как некоторые хосты могут предлагать только веб-интерфейсы (phpMyAdmin) к базам данных, находящимся под защитой.

<span id="File_system">

Файловая система
MediaWiki хранит другие компоненты Вики в файловой системе.

Наиболее важными из них являются:


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

Лучшим методом хранения таких файлов — архивы типа, которые могут быть сжаты. Для Windows можно использовать такие утилиты, как WinZip или 7-Zip.

Варианты для Linux, если вики хранится в директории

Должна быть резервная копия всей папки wiki в директории htdocs, если используется XAMPP.

<span id="Configuration_files">

Конфигурационные файлы
- самый важный из них, но в вики могут быть также такие файлы, как  или другие конфигурационные файлы веб-сервера, которые необходимо резервировать.

<span id="Uploaded_files">

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

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

<span id="Backup_the_content_of_the_wiki_(XML_dump)">

Резервная копия содержимого вики (XML dump)
Для дополнения дампа базы данных рекомендуется выполнять XML дапм. В XML дамп входит содержимое wiki-страниц и всех их ревизий (информация о логинаx пользователей, журналы, метаданные изображений в xml дампе не хранятся).

XML-дампы реже вызывают проблемы с character encoding, являются средством быстрой передачи больших объемов содержимого и могут легко использоваться сторонними инструментами, что делает XML-дампы хорошим запасным вариантом на случай, если основной дамп базы данных окажется непригодным.

Чтобы создать дамп XML, используйте инструмент командной строки, расположенный в каталоге   вашей установки MediaWiki. См. для более детальной информации.

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

Для импорта XML-дампа в wiki используйте инструмент коммандной строки. для небольшого набора данных вы можете использовать Special:Import через браузер (по умолчанию эта функция доступна только sysop группе).

''См. для более детальной информации.''

<span id="Without_shell_access_to_the_server">

MediaWiki Dump Generator
Если у вас нет доступа к оболочке, воспользуйтесь скриптом MediaWiki Client Tools MediaWiki Dump Generator генератора дампов. Он запускается из командной строки в терминале.

XML-дамп может содержать полную или только последнюю историю страниц. Дамп изображений будет содержать все типы файлов с соответствующими описаниями. Файлы  и   будут содержать информацию о возможностях вики, например, об установленных расширениях и скинах. Информация об учетных записях пользователей не сохраняется.

Полные инструкции находятся в GitHub-репозитории MediaWiki Client Tools MediaWiki Dump Generator.

См. также Data dumps.

Скрипты

 * неофициальный скрипт резервного копирования Flominator: User:Flominator/Backup MW; создает резервную копию всех файлов и базы данных с возможной ротацией резервных копий. Shell script, last updated 2012.
 * Еще один скрипт backup script, который: делает дамп БД, файлов (по умолчанию только картинок, при установке можно включить все файлы) и XML; переводит сайт в режим "только чтение"; проставляет временные метки; считывает charset из LocalSettings. Сценарий не нужно модифицировать для каждого резервируемого сайта. Не производит (пока) ротацию старых резервных копий. Использование: . Также предоставляется скрипт для восстановления резервной копии  . Скрипт оболочки, последнее обновление 2013 г.
 * User:Darizotas/MediaWiki Backup Script for Windows - скрипт для резервного копирования установки MediaWiki под Windows. Примечание: Не имеет функции восстановления. Скрипт оболочки, последнее обновление 2015 г.
 * неофициальный скрипт резервного копирования User:Duesentrieb: Неофициальный скрипт резервного копирования Скрипт оболочки, последнее обновление 2016 года.
 * Скрипт для периодического создания резервных копий mw_backup. Этот скрипт будет создавать ежедневные, еженедельные и ежемесячные резервные копии базы данных и каталога изображений при ежедневном запуске в качестве задания cron. PHP-скрипт, последнее обновление 2017 года.
 * Еще один неофициальный на Lanthanis, который: экспортирует страницы указанных пространств имен в XML-файл; делает дамп указанных таблиц базы данных; и добавляет дополнительные указанные папки и файлы в ZIP-файл резервной копии. Может использоваться с планировщиком задач Windows. Последнее обновление 2019 года.
 * WikiTeam tools - если у вас нет доступа к серверу (например, ваша вики находится на бесплатной викиферме), вы можете сгенерировать XML-дамп и дамп изображений с помощью dumpgenerator из WikiTeam tools, (Python 2). См. раздел some saved wikis. Скрипт на языке Python 2.
 * MediaWiki Dump Generator - Если у вас нет доступа к серверу (например, ваша вики находится на бесплатной викиферме), вы можете сгенерировать XML-дамп и дамп изображений с помощью dumpgenerator из Mediawiki Client Tools, скрипт на Python 3, последнее обновление 2023.

Расширения

 * – Позволяет пользователям генерировать и загружать дампы баз данных
 * – Позволяет пользователям генерировать и загружать XML и дампы файлов/изображений

<span id="See_also">

См. также

 * - это быстрый и простой способ сохранить все страницы в вашей вики.
 * — если у вас нет успешного резервного копирования
 * — если у вас нет успешного резервного копирования
 * — если у вас нет успешного резервного копирования
 * — если у вас нет успешного резервного копирования