Перенос сайта с одного сервера на другой через коносоль

В последнее время столько раз переносил сайты с одного сервера на другой, что решил всё делать через командную строку, так быстрее. Хотя есть не намного медленнее альтернативы, если совместно использовать командную строку и графический интерфейс, но решил делать одним способом. Описываю процесс.

Содержание:

Удобно создать себе команды в каком-нибудь защищенном менеджере паролей и оттуда в случае необходимости копировать:

или в таком формате, где-нибудь в заметках, для каждого из своих сайтов:

В таком случае перенос сайта или базы данных будет занимать считанные минуты. Это будет казаться фантастикой, особенно, если раньше вы копировали с помощью FTP клиентов и страницы phpMyAdmin.

При переносе менять можно всего лишь ip адрес сервера, а пути оставлять прежними. Если вы везде пользуетесь одними инструментами, например, ISP Manager или Vesta, то пути и не меняются. Это очень удобно.

Перенос сайта

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

На старом сервере

Сначала перенесем файлы сайта.

Заходим на сервер через ssh, удобно логиниться через быстрые ярлыки. А если более профессионально и безопасно, то через SSH ключ.

Переходим в директорию, которую будем архивировать:

cd /home/admin/web/ploshadka.net/public_html/

Запаковываем в .tar.gz (сохраняем только папку сайта, без полного пути):

tar -cvvzf site.tar.gz ./

Переносим архив сайта на другой сервер:

scp site.tar.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/

При первом подключении к стороннему серверу появится сообщение о том, что надо внести уникальный отпечаток, чтобы в последствии доверять этому серверу. Надо ответить yes.

The authenticity of host '111.11.11.11 (111.11.11.11)' can't be established.
ECDSA key fingerprint is 01:al:39:bm:19:ds:32:59:ns:49:fm:ds:59:18:38:23.
Are you sure you want to continue connecting (yes/no)?

Затем вводим пароль доступа от нового сервера:

Warning: Permanently added '111.11.11.11' (ECDSA) to the list of known hosts.
root@111.11.11.11's password:

После чего файл будет скопирован на новый сервер.

У меня при команде scp показывает ошибку:

ssh: No such file or directory

Но, если перед ней указано что-то вроде:

100% 600MB 10.5MB/s 00:57

Значит, что наш резервный файл был скопирован удачно и в нужное место.

Я не знаю с чем связано уведомление No such file or directory, когда при этом всё копируется. Может баг такой. Если вдруг директории такой и в самом деле нет, то в этом случае никакого копирования не произойдет.

Удаляем архив на старом месте. Он нам больше не нужен.

rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz

На новом сервере

Заходим на новый сервер. А затем переходим в директорию в которую хотим распаковать архив:

cd /home/admin/web/ploshadka.net/public_html/

Распаковываем в эту папку все файлы:

tar -xvvzf /home/admin/web/ploshadka.net/public_html/site.tar.gz

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

xvvzf расшифровывается как:
x — распаковка, vv — подробный вывод результатов, z — формат файла gz, f — файл.

Удаляем наш бэкап файл:

rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz

Все команды вместе

На старом сервере:

cd /home/admin/web/ploshadka.net/public_html/
tar -cvvzf site.tar.gz ./
scp site.tar.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/
(ввести пароль от нового сервера)
rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz

На новом:

cd /home/admin/web/ploshadka.net/public_html/
tar -xvvzf /home/admin/web/ploshadka.net/public_html/site.tar.gz
rm -f /home/admin/web/ploshadka.net/public_html/site.tar.gz

Переносим базу данных MySQL

Теперь пришла очередь перенести базу данных сайта.

На старом сервере

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

cd /home/admin/web/ploshadka.net/public_html/

Экспортируем и архивируем базу данных. В USER и DBNAME вводим название конкретной базы данных и название пользователя для неё, которую хотим экспортировать. Вместо PASS вводим пароль от этой же базы данных.

mysqldump -u USER -pPASS DBNAME | gzip > /home/admin/web/ploshadka.net/public_html/bd.sql.gz

Переносим на новый сервер:

scp bd.sql.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/

Вводим пароль от нового сервера. Всё перенеслось, если в конце будет подобное:

100% 162KB 162.4KB/s 00:00

Удаляем файл со старого сервера:

rm -f /home/admin/web/ploshadka.net/public_html/bd.sql.gz

На новом сервере

Импортируем базу данных. Вместо BDNAME — название нашей базы данных. Само слово root — не меняем.

zcat /home/admin/web/catavto.com/public_html/bd.sql.gz | mysql -u root -pПароль_от_рутдоступа_mysql BDNAME

Обратите внимание пароль от root доступа к MySQL. Для панели Vesta его можно найти здесь.

Удаляем файл с нового сервера:

rm -f /home/admin/web/ploshadka.net/public_html/bd.sql.gz

Все команды вместе:

На старом:

cd /home/admin/web/ploshadka.net/public_html/
mysqldump -u USER -pPASS DBNAME | gzip > /home/admin/web/ploshadka.net/public_html/bd.sql.gz
scp bd.sql.gz ssh root@111.11.11.11:/home/admin/web/ploshadka.net/public_html/
(ввести пароль от нового сервера)
rm -f /home/admin/web/ploshadka.net/public_html/bd.sql.gz

На новом:

zcat /home/admin/web/catavto.com/public_html/bd.sql.gz | mysql -u root -pПароль_от_рутдоступа_mysql BDNAME
rm -f /home/admin/web/ploshadka.net/public_html/bd.sql.gz

Источник: https://ploshadka.net/fast-site-migration/

Опубликовано: 24 августа 2021
Ярослав Указов Проект-менеджер
Эта статья была полезна? Да Нет

0 комментариев


    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите