Перенос сайта с одного Linux сервера на другой через SCP выполняется копированием файлов и базы данных на удалённый сервер с использованием защищённого протокола передачи данных. Это самый быстрый и безопасный способ миграции при наличии доступа по SSH к обоим серверам.
Причины необходимости переноса сайта
- Смена хостинг-провайдера или сервера с лучшими характеристиками
- Увеличение нагрузки на текущий сервер
- Переезд на выделенный или облачный сервер
- Необходимость резервного копирования на отдельный сервер
- Обновление операционной системы или конфигурации серверного окружения
Пошаговая инструкция по переносу сайта через SCP
- Подключитесь к исходному серверу по SSH, используя команду
ssh user@source_server_ip. - Создайте резервную копию базы данных командой
mysqldump -u username -p database_name > backup.sql(введите пароль по запросу). - Спакуйте директорию сайта в архив командой
tar -czf site_backup.tar.gz /var/www/html. - Переходите на локальный компьютер, откройте терминал и выполните команду
scp -r user@source_server_ip:/home/user/site_backup.tar.gz ~/Downloads/. - Загрузите архив на целевой сервер командой
scp ~/Downloads/site_backup.tar.gz user@destination_server_ip:/home/user/. - Загрузите файл базы данных на целевой сервер командой
scp user@source_server_ip:/home/user/backup.sql user@destination_server_ip:/home/user/. - Подключитесь к целевому серверу командой
ssh user@destination_server_ip. - Распакуйте архив сайта командой
tar -xzf /home/user/site_backup.tar.gz -C /var/www/. - Импортируйте базу данных командой
mysql -u username -p database_name < /home/user/backup.sql. - Проверьте права доступа к файлам командой
chmod -R 755 /var/www/html. - Назначьте владельца файлов веб-серверу командой
chown -R www-data:www-data /var/www/html. - Перезагрузите веб-сервер командой
systemctl restart nginx(илиsystemctl restart apache2для Apache). - Проверьте работу сайта, открыв его в браузере по IP-адресу или доменному имени целевого сервера.
Часто задаваемые вопросы
Как передать только определённые директории сайта, а не весь контент? Используйте команду scp -r user@source_server_ip:/var/www/html/uploads/ user@destination_server_ip:/var/www/html/ для копирования конкретной папки вместо полного архива.
Почему при копировании выдаёт ошибку "Permission denied"? Убедитесь, что у вас есть права доступа к файлам на исходном сервере и права на запись в целевую директорию; используйте sudo scp если необходимо повышение привилегий.
Как ускорить передачу больших файлов через SCP? Используйте опцию -C для включения сжатия (scp -C -r user@server_ip:/path/to/files /local/path) или рассмотрите использование rsync вместо SCP для частичной синхронизации.