Manual:Backing up a wiki/ru

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

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

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



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


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

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

При использовании по умолчанию серверной части 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

Some newer versions of MySQL might show an error about tablespaces and PROCESS privilege. MediaWiki does not use tablespaces. The solution is to add the  option to the command:

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

Additional options you should consider using with mysqldump for a backup includes the following.

If you do not use --single-transaction, then you should consider using the --lock-tables and --add-locks options.

Due to an unexpected change in MySQL versions 5.7.41 and 8.0.32 in February 2023, the --single-transaction option required the backup user to have RELOAD or FLUSH_TABLES privileges. The issue was fixed in MySQL versions 5.7.42 and 8.0.33. See MySQL Bug 109685 and Ubuntu Bug 2003866 for details.

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



Запуск 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

Running mysqldump with Systemd
Systemd unifies service configurations and control. Timers are systemd unit files that control service files or events. Timers can be used as an alternative to cron. An example of systemd unit files and backup script is shown below.

wiki-backup.timer
The following timer runs the wiki-backup service at 5:10 AM every morning.

$ 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
When the wiki-backup timer fires, then the service is invoked. The service runs a script located in /sbin.

$ 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, чтобы удалить существующие ссылки при импорте.

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

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

<span id="External_links">

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

 * В качестве учебного пособия можно посмотреть MySQL Backup/Restore Tutorial
 * Резервное копирование базы данных

HeidiSQL (alternative to phpMyAdmin)
HeidiSQL — похожая на phpMyAdmin, но менее строгая версия бесплатного phpMyAdmin. HeidiSQL requires a direct database connection, where some hosts may only offer web interfaces (phpMyAdmin) to firewalled databases.

<span id="File_system">

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

The most important of these are:


 * uploaded files in the  directory (including deleted files, thumbnails, and rendered math and SVG images, if applicable).
 * uploaded files in the  directory (including deleted files, thumbnails, and rendered math and SVG images, if applicable).

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

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

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

Configuration files
is the most important of these, but a wiki might also have things like  or other web server configuration files that should be backed up.

<span id="Uploaded_files">

Загруженные файлы
Files uploaded to the wiki are by default put into the  directory, separated into subdirectories such as. There are also other directories such as  and. These should all be backed up.

The  can be backed up along with everything else, but can optionally be excluded in order to save backup space. This directory stores the derived thumbnails of images and other files; generally multiple thumbnails per wiki file. After restoring from backup, these thumbnails will be recreated as required (although depending on this may need to be a manual process).

<span id="Backup_the_content_of_the_wiki_(XML_dump)">

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

XML dumps are less likely to cause problems with character encoding, as a means of transferring large amounts of content quickly, and can easily be used by third party tools, which makes XML dumps a good fallback should your main database dump become unusable.

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

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

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

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

Without shell access to the server
If you have no shell access, use the MediaWiki Client Tools' MediaWiki Scraper dumpgenerator script, a Python 3.x port of the WikiTeam Python 2.7 dumpgenerator.py script. It is run from the command-line in a terminal.

The XML dump can include full or only most recent page history. The images dump will contain all file types with associated descriptions. The  and   files will contain information about wiki features such as the installed extensions and skins. User account information won't be preserved.

Full instructions are at the MediaWiki Client Tools' MediaWiki Scraper GitHub repository.

See also Data dumps.

Скрипты
Script does not need to be modified for each site to be backed up. Does not (yet) rotate old backups. Usage:. Also provides a script to restore a backup. Shell script, last updated 2013. Shell script, last updated 2015. PHP script, last updated 2017. Can be used with Windows task scheduler. Last updated 2019. Python 2 script.
 * неофициальный скрипт резервного копирования Flominator: User:Flominator/Backup MW; создает резервную копию всех файлов и базы данных с возможной ротацией резервных копий. Shell script, last updated 2012.
 * Another backup script that: dumps DB, files (just pictures by default, option to include all files in installation), and XML; puts the site into read-only mode; timestamps backups; and reads the charset from LocalSettings.
 * User:Darizotas/MediaWiki Backup Script for Windows - a script for backing up a Windows MediaWiki install. Note: Has no restore feature.
 * неофициальный скрипт резервного копирования User:Duesentrieb: Неофициальный скрипт резервного копирования Shell script, last updated 2016.
 * Script to make periodical backups mw_backup. This script will make daily, weekly and monthly backups of your database and images directory when run as a daily cron job.
 * Another unofficial by Lanthanis that: exports the pages of specified namespaces as an XML file; dumps specified database tables; and adds further specified folders and files to a ZIP backup file.
 * WikiTeam tools - if you do not have server access (e.g. your wiki is in a free wikifarm), you can generate an XML dump and an image dump using dumpgenerator from WikiTeam tools, (Python 2). See some saved wikis.
 * Mediawiki Scraper - if you do not have server access (e.g. your wiki is in a free wikifarm), you can generate an XML dump and an image dump using dumpgenerator from Mediawiki Client Tools, Python 3 script, last update 2023.

Расширения

 * – Allows users to generate and download database dumps
 * – Allows users to generate and download XML and file/image dumps

<span id="See_also">

См. также

 * is a quick and easy way to save all pages on your wiki.
 * — if you don't have a successful backup
 * — if you don't have a successful backup
 * — if you don't have a successful backup
 * — if you don't have a successful backup