Главная Новости

Архивация и перенос (миграция) сайтов на DRUPAL с помощью bash и SSH

Опубликовано: 21.12.2017

видео Архивация и перенос (миграция) сайтов на DRUPAL с помощью bash и SSH

Как перенести данные со старого iPhone на новый

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



Для переноса и архивирования сайтов на Drupal можно использовать модули Backup and Migrate и Backup and Migrate files и до недавнего времени я ими пользовался. Но не так давно сайт переехал на хостинг с доступом по SSH и необходимость в данных модулях отпала, потому-что гораздо удобнее это сделать средствами Bash.


перенос базы Microsoft Outlook 2010

Итак, если вы имеете доступ к вашему сайту по ssh, алгоритм архивирования сайта выглядит следующим:

1. Сделать бэкап базы данных средствами MySQL

mysqldump -uUSER -pPASSSWORD --default-character-set=UTF8 mysqlBase > sitedb_backup.sql 

где :

USER -имя пользователя имеющего доступ к Базе данных PASSWORD - пароль к базе данных  mysqlBase - имя базы данных sitedb_backup.sql -имя файла дампа БД

Пароль и имя пользователя всегда можно посмотреть в файле sites/default/settings.php, в принципе скрипт мог бы их оттуда парсить, но было лениво это писать.


Архивация. Видео 14.

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

Нижеприведенный скрипт это и делает:

#!/bin/bash # Call parameters # sh backup.sh login_sql password_sql SiteFolder siteName MySQL_base_name echo;echo;echo;echo;echo; # проверяем количество переданных параметров и печатаем их на всякий случай if [ "$#" != 5 ] then echo 'Quantity parameters='$# echo 'Error! Must have five parameters' exit else echo 'login ='$1 echo 'password='$2 echo 'Site Folder='$3 echo 'Site Name='$4 echo 'Database Name='$5 fi # запоминаем текущую папку sr=$(pwd) # Выгружаем базу данных сайта echo mysqldump -u$1 -p$2 --default-character-set=UTF8 $5 '>' $4_backup.sql if mysqldump -u$1 -p$2 --default-character-set=UTF8 $5 > $4_backup.sql then echo 'Error! Database dump Created' else # Если дамп сделать не удалось, то вываливаемся echo 'Database dump NOT Created' exit fi # Создаем в текущей папке скрипта подпапку с именем сайта # В нее потом занесем архив сайта mkdir $4 # Архивируем дамп базы данных сайта zip backup_bd_$4 $4_backup.sql echo 'Database dump archived ' # Удаляем ненужный дамп rm $4_backup.sql echo 'Database dump deleted ' echo 'cd to SiteFolder' # переходим в папку сайта cd ~/$3 echo 'Create archive all files of site' # архивируем все файлы сайта zip -r backup_$4 * # удаляем из архива файл /sites/default/settings.php # можно было бы сделать исключение в предыдущей команде, но мне так захотелось echo 'Remove from archive file setting /sites/default/settings.php' zip -v backup_$4.zip -d /sites/default/settings.php # Архивируем отдельно файл /sites/default/settings.php zip default_$4 sites/default/settings.php # архивируем отдельно файлы начинающиеся на . echo 'Create archive files without filename, have extension only. Example .htaccess' zip dot_files_$4 .* # возвращаемся в папку скрипта echo 'Return to backup folder' cd $sr # переносим архивные файлы в подпапку с именем файла echo 'Move files to ' $sr/$4/' folder' mv -v -i ~/$3/backup_$4.zip $sr/$4/backup_$4.zip mv -v -i ~/$3/dot_files_$4.zip $sr/$4/dot_files_$4.zip mv -v -i ~/$3/default_$4.zip $sr/$4/default_$4.zip mv -v -i backup_bd_$4.zip $sr/$4/backup_bd_$4.zip echo 'The end'

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

rss