Web
Analytics
Skip to content

Concrete5 на русском языке

Как создать бэкап сайта используя командную строку

 

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

Создание бэкапов с использованием инструментов командной строки бесплатно доступно для всех пользователей Linux или Mac. 

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

Требования

На вашем хостинге должны подтвердить, что установлено соответствующее програмное обеспечение. 

Програмное обеспечение на сервере:

  • tar

Програмное обеспечение на компьюетере:

  • SSH (используется для создания и удаления файлов бэкапов)
  • SCP (используется для скачивания файлов)
  • Terminal (такой как gnome-terminal – используется для выполнения команд)

Какая нужна информация:

  • IP адрес сервера и доступ по SSH с паролем
  • Название базы данных и пароль доступа
  • Корневая директория сайта (и любая директория, которую хотели бы включить или исключить из бэкапа)
  • Какой тип базы данных: MySQL, PostgreSQL или SQLite (если сайт использует БД)

Шаги по созданию бэкапа

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

Соединение с сервером по SSH:

SSH обеспечивает Secure Shell, то есть Безопасную Оболочку, и обычно используется для дистанционного выполнения команд или скриптов. 

 

Откройте терминал (Если не знаете где он находится наберите в Finder: терминал) В открывшемся терминале наберите следующую команду для соединения с сервером, используя SSH протокол:

ssh username@serversIP

После этого терминал запросит ввести пароль (появится ключик) Когда будете вводить пароль, он не будет отображаться — не беспокойтесь, просто нажмите ВВОД. Когда компьютер соединится с сервером, каждая команда, которую будете набирать в терминале будет исполняться сервером. Сначала мы создадим новую папку на сервере под названием  “backup”. Вы можете расположить эту папку в любом месте не доступном для посторонних пользователей.

Если корневая директория веб приложения будет /home/username/html можете без проблем создать папку  “backup” в /home/username/ . Мы удалим бэкапы с сервера, после их переноса на компьютер. 

Если вы не знаете как называется корневая директория сайта, можете посмотреть в панели администратора сервера cPanel:
Home directory

Здась видно, что корневая директория сайта  /home/ma658tvk.

В Linux и macOS можно создать директория используя команду mkdir , как здесь:

mkdir -p /home/username/backup/{db,core,logs,conf}

Эта команда создаст папку “backup” в директории /home/username/. Внутри папки, мы создадим еще четыре папки:  dbcorelogs, и conf.

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

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

Экспорт Базы Данных

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

Следующие команды экспортируют дамп базы данных и загрузят его в директорию  /home/username/backup/db/

Если вы используете MySQL, выполните следующую команду:

mysqldump -u [database_user] -p [database_name] > [/home/username/backup/db/имя_сайта.sql]

Если используете PostgreSQL, выполните эту команду:

pg_dump -U [database_user] [database_name] > [/home/username/backup/db/yourdomain.sql]

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

Если сайт использует SQLite, то просто скопируйте файл:

cp [/путь/к/вашей/SQLite.db] [/home/username/backup/db/]

Создание Tar файла файловой системы сайта

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

Опять, давайте предположим, что сайт находится в директории /home/username/html. Вы можете создать tar файл с помощью этой команды:

tar -czvf /home/username/backup/core/core.tar.gz /home/username/html

Эта команда будет эффективно работать, если хотите включить все файлы из этой директории /home/username/html, но что если вам не нужны некоторые файлы?

Давайте представим структуру сайта, например, такую:

html
├── cache
├── core
└── www
    ├── index.php
    └── media

Если вы сожмете всю директорию, то папка cache также будет включена в архив. Это может сильно увеличить объем сжатого файла и времени сжатия. Команда tar, позволяет легко исключать директории и файлы, установив флаг  –exclude. Теперь мы можем снова сжать директорию сайта, исключив папку cache из директории.

tar --exclude='/home/username/html/cache' -cf /home/username/backup/core/core.tar /home/username/html

Вуаля –  .tar файл под названием core.tar будет сохранен в директории /home/username/backup/core/. Можно использовать флаг–exclude столько раз, чтобы исключить все ненужные директории из архива. 

Дополнительно, но не обязательно: Бэкап конфигурационных файлов и файлов логов

Я думаю, что стоит делать также бэкапы конфигурационных файлов. Бывало, что я забывала, как выглядит мой `httpd.conf`, и тогда мне было легче найти его на моем компьютере. 

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

tar -cf /home/username/backup/conf/conf.tar \
/полный/путь/к/первому_месту \
/полный/путь/ко/второму_месту \
/полный/путь/к/третьему_месту

Символ “\” в конце первой строки говорит терминалу не испольнять команду при нажатии кнопки "Ввод", а ожидать, что у команды будет несколько строк. Только в последней строке отсутствует символ “\”.  Это говорит терминалу, что команда готова к выполнению. Таким образом вы можете создать файл с расширением .tar  содержащий файлы конфигураций или логов, находящиеся в разных папках и директориях всей файловой системы.

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

Время все объединить

Создание окончательного архива Tar

Теперь все наши архивы находятся в папке /home/username/backup/ , все, что нужно это создать объединенный архив tar и скачать его на компьютер. Это не является обязательным требованием, вы можете скачать не сжатый архив из нескольких файлов, но лучше скачивать один файл, а не несколько. 

tar -cf /home/username/latest.backup.tar /home/username/backup/

Эта команда создаст файл под названием latest.backup.tar в котором будут все наши архивные файлы. Можете отсоединить компьютер от сервера, напечатав в терминале команду exit.

Скачивание архива при помощи команды SCP

Чтобы скачать файл latest.backup.tar , нужна команда scp. Вот как скачивается файл:

scp username@IP_сервера:/home/username/latest.backup.tar /home/username/backups/domainname/backup_$(date +%d%m%Y_%H%M%S).tar

Эта команда берет файл latest.backup.tar с сервера и скачивает его на компьютер в папку  /home/username/backups/domainname/  затем его переименовывает с помощью стандартной команды  (дата, например backup_24022018_142422). Это помогает впоследствии найти самый последний архив или архив на определенную дату

Удаление архива с сервера

Теперь бэкап находится в безопасности на компьютере, и можно спокойно удалить архив с сервера.

Чтобы это сделать, нужно снова авторизоваться на сервере через SSH и запустить следующие команды

rm /home/username/latest.backup.tar
rm -rfi /home/username/backup/

Первая команда удаляет с сервера окончательный файл  tar, а вторая — рекурсивно удаляет с сервера всю папку архива.

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

Когда удалите файлы архива, можете выйти с сервера, введя команду exit. Теперь у вас есть полный бэкап архив на компьюетер. Успех! Или нет? 

Читайте восстановление архивов через командную строку терминала , чтобы проверить бэкапы!

Архивная копия никогда не будет считаться успешной пока не будет проверена!

Заключение

Это не полное решение, хотя это хорошее начало в науке создания бэкапов.

Перевод статьи : How to Create Website Backups Using Command-line Tools

Переводчик: Татьяна Дерягина