В последнее время столько раз переносил сайты с одного сервера на другой, что решил всё делать через командную строку, так быстрее. Хотя есть не намного медленнее альтернативы, если совместно использовать командную строку и графический интерфейс, но решил делать одним способом. Описываю процесс.
Удобно создать себе команды в каком-нибудь защищенном менеджере паролей и оттуда в случае необходимости копировать:
или в таком формате, где-нибудь в заметках, для каждого из своих сайтов:
В таком случае перенос сайта или базы данных будет занимать считанные минуты. Это будет казаться фантастикой, особенно, если раньше вы копировали с помощью FTP клиентов и страницы phpMyAdmin.
При переносе менять можно всего лишь ip адрес сервера, а пути оставлять прежними. Если вы везде пользуетесь одними инструментами, например, ISP Manager или Vesta, то пути и не меняются. Это очень удобно.
Перенос сайта
Ниже будет подробное описание переноса, а в конце краткий перечень всех команд. Если команды и так понятны, можно сразу перейти к списку всех команд и вставлять в командную строку одну за другой.
На старом сервере
Сначала перенесем файлы сайта.
Заходим на сервер через ssh, удобно логиниться через быстрые ярлыки. А если более профессионально и безопасно, то через SSH ключ.
Переходим в директорию, которую будем архивировать:
Запаковываем в .tar.gz (сохраняем только папку сайта, без полного пути):
Переносим архив сайта на другой сервер:
При первом подключении к стороннему серверу появится сообщение о том, что надо внести уникальный отпечаток, чтобы в последствии доверять этому серверу. Надо ответить yes.
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)?
Затем вводим пароль доступа от нового сервера:
root@111.11.11.11's password:
После чего файл будет скопирован на новый сервер.
У меня при команде scp показывает ошибку:
Но, если перед ней указано что-то вроде:
Значит, что наш резервный файл был скопирован удачно и в нужное место.
Я не знаю с чем связано уведомление No such file or directory, когда при этом всё копируется. Может баг такой. Если вдруг директории такой и в самом деле нет, то в этом случае никакого копирования не произойдет.
Удаляем архив на старом месте. Он нам больше не нужен.
На новом сервере
Заходим на новый сервер. А затем переходим в директорию в которую хотим распаковать архив:
Распаковываем в эту папку все файлы:
xvvzf расшифровывается как:
x — распаковка, vv — подробный вывод результатов, z — формат файла gz, f — файл.
Удаляем наш бэкап файл:
Все команды вместе
На старом сервере:
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
На новом:
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
Теперь пришла очередь перенести базу данных сайта.
На старом сервере
Снова переходим в директорию, которую будем архивировать. Это нужно делать всегда, на всякий случай, особенно если сайтов много, чтобы не было ошибок:
Экспортируем и архивируем базу данных. В USER и DBNAME вводим название конкретной базы данных и название пользователя для неё, которую хотим экспортировать. Вместо PASS вводим пароль от этой же базы данных.
Переносим на новый сервер:
Вводим пароль от нового сервера. Всё перенеслось, если в конце будет подобное:
Удаляем файл со старого сервера:
На новом сервере
Импортируем базу данных. Вместо BDNAME — название нашей базы данных. Само слово root — не меняем.
Обратите внимание пароль от root доступа к MySQL. Для панели Vesta его можно найти здесь.
Удаляем файл с нового сервера:
Все команды вместе:
На старом:
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
На новом:
rm -f /home/admin/web/ploshadka.net/public_html/bd.sql.gz
Здравствуйте, всё ясно-понятно) спасибо большое за инфу! Но мне кажется, что БД можно качать в папку с сайтом перед тем как его запаковывать в архив, тем самым избавляя себя от лишнего раза писания команды
ввода пароля))
Верно, тут как кому удобнее) Особенно когда на сервере много сайтов, удобнее переносить одним разом, а не все по очереди. Например, чтобы импортировать сразу несколько БД, нужна чуть другая команда.
Кстати, чтобы не вводить пароль можно соединяться через SSH ключ.
Спасибо огромное. Очень полезно!