Наконец-то закончил перенос сайтов и прочих данных с двух старых VPS на новый мощный VDS. Вроде бы ничего сложного, но времени убивает много. Даже с применением хитростей, перенос нескольких десятков сайтов убил 2 вечера и 2 ночи. В этой заметке я собрал 4 основных совета по переносу сайтов с сервера на сервер. Так же выложил полезные скрипты.
#1 Несомненно удобнее переносить файлы сразу с сервера на сервер по HTTP или FTP протоколу, нежели промежуточно скачивать их к себе. Но, иногда полезно иметь локальные бекапы. Так же никто не мешает заливать сразу на сервер и паралельно скачать копии себе. Некоторые панельки имеют встроенные функции для этого, например ISPmanager отлично справляется с загрузкой файлов с удалённых сайтов. Ежели панель управления хостингом ущербна, но есть доступ по SSH (shell доступ), то отличным решением для копирования файлов будет утилита wget. Она обладает поддержкой HTTP и FTP протоколов, а так же содержит множество полезных функций и опций. Например, для копирования файлов с FTP сервера нужно в SSH консоли выполнить команду
wget ftp://логин:пароль@ftp.oldhost.ru/www/oldsite.ru/backup.zip
#2 Можно банально переносить каждый файл по отдельности, но гораздо удобнее архивировать сайт целиком или же сразу пачку сайтов. Выше упомянутый ISPmanager умеет архивировать файлы и папки нажатием одной кнопки. Обладатели других панелей могут скачать или написать PHP скрипт для архивации файлов. Специально к теме данного поста написал простой скрипт архивации файлов и папок, на основе другого старого скрипта с использованием библиотеки PclZip. В самом скрипте надо указать имена файлов или папок и запустить скрипт get.php. Так же можно выполнять архивацию по SSH с помощью команд архивирования, но, надеюсь, до такого изврата редко кто доходит.
#3 Для переноса MySQL баз данных с одного хостинга на другой можно пользоваться привычным клиентом phpMyAdmin, и экспортировать дампы в архив. Но есть как минимум ещё 2 способа сделать это быстрее и проще.
Первый способ – использовать php утилиту Sypex Dumper. Это удобный и очень быстрый скрипт для экспорта, импорта и создания резервных копий баз данных MySQL. В отличии от phpMyAdmin он может работать с базами данных любых размеров, за счёт продуманного алгоритма работы. Sypex Dumper не загружает бекап-файл целиком в память, благодаря чему он одинаково быстро работает, как с маленькими, так и с большими объемами данных. Не требует настройки. Достаточно закачать скрипт на старый и новый сервера.
Второй способ применим в случае если вы имеете полный доступ к файлам на сервере. А конкретно нужен доступ к «/var/db/mysql» во FreeBSD или к аналогичной директории, в зависимости от операционной системы и настроек MySQL сервера. В этой папке находятся файлы баз данных. Их то и надо перенести в новое место. Не стоит беспокоиться о совместимости версий файлов для разных версий MySQL. По моим наблюдениям, Хоть от 3ей версии, хоть от 5ой, файлы совместимы и работают без ошибок.
Так же можно попробовать извратиться и сделать перенос данных средствами репликации данных.
#4 Наверное, самым сложным моментом при переносе сайтов является синхронизация прав доступа к файлам. Если забыть выставить нужные права доступа (chmod) к папке или файлу то в один прекрасный момент сайт станет показывать посетителям ошибки, а не содержание. Но самое интересное начинается когда права доступа надо расставить для нескольких десятков сайтов на различных движках. Тут лучше запомнить или выписать на листочек имена файлов и папок с нужными правами доступа. Возможно существует скрипт, который делает подобные дампы, но, к сожалению, не встречал ничего подобного. Если кто знает – пишите в комменты. По сути ничего сложного и необычного скрипт не делает, так что если будет нужда и свободное время – то сделаю нечто подобное.
>Специально к теме данного поста написал простой скрипт архивации файлов и папок, на основе другого старого скрипта с использованием библиотеки PclZip.
При попытке заархивировать сайт вылетает ошибка
Fatal error: Maximum execution time of 30 seconds exceeded in /home/data/www/pclzip.lib.php on line 1997
И что делать? Лимит никак не обойти?
левитр, меняй хостинг или архивируй меньшее количество файлов за один раз.
Блин, у меня то ли хостинг тупит, то ли что… Ну допустим на блоге плагины конфликтуют или у меня руки кривые, и сайт периодически падает — но почему в это же время ложится форум на поддомене, хотя у него своя Mysql-база? Чувствую, и мне переносится придется…
Спасибо за инфу)