ГлавнаяРазноеРезервное копирование WordPress с помощью mysqldump и tar

Резервное копирование WordPress с помощью mysqldump и tar

Если вы самостоятельно администрируете ваши сайты на WordPress, то выполнять резервное копирование на виртуальных и выделенных серверах можно с помощью системных утилит mysqldump и tar.

Некоторое время назад мы опубликовали подборку плагинов и сервисов для резервного копирования сайтов на WordPress. Если по какой-либо причине они вам не подошли, то мы советуем попробовать резервное копирование вручную с помощью системных утилит на сервере.

Данный способ для более продвинутых пользователей WordPress. Он подразумевает наличие SSH доступа к вашему серверу и базовые навыки работы в командной строке вашей системы, например Terminal.app в OS X или PuTTY для Windows. Параметры подключения к удаленному серверу вы можете уточнить у вашего хостинг-провайдера.

После подключения к удаленному серверу, где находится ваш сайт, перейдите в каталог одним уровнем выше. Например, если сайт находится в директории /home/wpmag/public_html, то работать мы будем в /home/wpmag:

$ ssh wpmag@example.org
$ cd /home/wpmag

mysqldump: резервная копия базы данных

Специальная утилита mysqldump позволяет выполнять так называемый «дамп» или резервную копию состояния базы данных MySQL. Программа mysqldump входит в пакет mysql-client, который доступен на большинстве Linux-серверах.

Запуск утилиты mysqldump

Запуск утилиты mysqldump

Для запуска mysqldump вам потребуется логин и пароль к серверу MySQL, название базы данных и адрес самого сервера. Эту информацию можно взять из вашего файла конфигурации WordPress wp-config.php:

$ cat public_html/wp-config.php | grep DB_
define('DB_NAME', 'wordpress');
define('DB_USER', 'username');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'localhost');

Таким образом, чтобы создать резервную копию базы данных с названием «wordpress» необходимо запустить mysqldump со следующими параметрами:

$ mysqldump -uusername -ppassword -hlocalhost wordpress > database.sql

Обратите внимание на отсутствие пробелов в аргументах, например -uusername, а не ‑u username. Последним параметром к mysqldump указывается название базы данных. Если вы хотите получить резервную копию всех доступных баз данных на сервере, укажите аргумент --all-databases.

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

tar: резервная копия файлов WordPress

Утилита tar используется для создания архивов, которая также имеет возможность сжатия файлов с помощью Gzip. Для создания нового архива с помощью tar необходимо указать название архива и перечень файлов и директорий:

$ tar -czf backup.tar.gz public_html database.sql

Опции czf означают создание архива (-c), использование сжатия Gzip (-z) и запись результата в файл (-f backup.tar.gz). Таким образом будет создан новый архив, содержащий всю директорию public_html и резервную копию базы данных database.sql.

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

$ rm database.sql

Созданный архив можно хранить на сервере на тот случай, если потребуется его быстрое восстановление, но обязательно скачайте архив с резервной копией на ваш компьютер, на тот случай, если сервер станет недоступным. Скачать архив можно с помощью вашего любимого FTP клиента, или используя утилиты scp или rsync.

Полная резервная копия WordPress

Полная резервная копия WordPress

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

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

Когда настанет время восстановить резервную копию из архива, вам помогут утилиты tar и mysql. Распакуйте архив с резервной копией:

$ tar -xf backup.tar.gz

В том месте где вы распаковали архив вы увидите директорию public_html и database.sql. Если распаковку вы выполняли в том же месте, где и создание архива, то утилита tar вам предложит перезаписать файлы в директории public_html.

Если вы распаковали архив в другом месте, то вам необходимо вручную скопировать или переместить новую директорию public_html на место старой директории, например с помощью утилиты mv. Старую директорию можно предварительно удалить:

$ cd /home/wpmag
$ rm -rf public_html
$ mv backups/public_html public_html

После восстановления файлов приступайте к восстановлению резервной копии базы данных MySQL. Сделать это можно с помощью утилиты mysql с уже знакомыми нам параметрами:

$ mysql -uusername -ppassword -hlocalhost wordpress < backups/database.sql

Для восстановления всех баз данных из файла database.sql достаточно не указывать последний параметр к mysql:

$ mysql -uusername -ppassword -hlocalhost < backups/database.sql

Заключение

Все эти команды вы можете записать в shell-скрипт, например:

#!/bin/bash
NOW=$(date +"%Y-%m-%d-%H%M")
mysqldump -uusername -ppassword --all-databases > ~/all-databases.sql
tar -czf "backup-$NOW.tar.gz" ~/public_html ~/all-databases.sql
rm ~/all-databases.sql

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

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

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

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!