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

Admin MySQL, WordPress

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

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

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

В таком случае перенос сайта или базы данных будет занимать считанные минуты. Это будет казаться фантастикой, особенно, если раньше вы копировали с помощью 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

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Комментарии к статье “Как быстро перенести сайт на другой сервер” (2)

  • Аватар
    Pavel
    08.08.2019 в 19:23

    Здравствуйте, всё ясно-понятно) спасибо большое за инфу! Но мне кажется, что БД можно качать в папку с сайтом перед тем как его запаковывать в архив, тем самым избавляя себя от лишнего раза писания команды

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

    ввода пароля))

    • Admin
      Admin
      Автор записи
      08.12.2019 в 07:47

      Верно, тут как кому удобнее) Особенно когда на сервере много сайтов, удобнее переносить одним разом, а не все по очереди. Например, чтобы импортировать сразу несколько БД, нужна чуть другая команда.

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

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

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Как быстро перенести сайт на другой сервер"