Если вы самостоятельно администрируете ваши сайты на 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 вам потребуется логин и пароль к серверу 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
.
После того как вы скачаете резервную копию, проверьте ее размер и содержание. Убедитесь, что все находится на своих местах.
Восстановление данных
Когда настанет время восстановить резервную копию из архива, вам помогут утилиты 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) вашего контейнера, который также легко восстановить. Правда скачать себе такую копию контейнера компании обычно не позволяют.