Rsync. Простой способ эффективной синхронизации

Сегодня я немного порассуждаю на тему переноса тяжёлых сайтов с одного сервера на другой или же с локальной машины на хостинг. В частности это касается CMS 1C Битрикс, которая, как известно, славится своей тяжеловесностью и сразу после установки занимает более 350 Мб (и это без контента). Ругать или хвалить данную CMS здесь я не буду. Поговорим лишь о том, как быстро и эффективно осуществить перенос объёмного веб-сайта на примере этого движка.

Представим ситуацию, что у нас есть сайт и для дальнейшей работы над ним нужно сделать его копию где-то на соседнем (или не очень) сервере, ибо правка боевого сайта — практика весьма дурная. Забудьте про всякого рода FileZill’ы, WinSCP, Krusader и пр. FTP и недоSSH клиенты. Если речь идёт о небольшом сайтике весом в 50-100 мегабайт, то, конечно, можно копировать и так. Но если есть необходимость осуществить перенос монструозного Битрикс проекта, разросшегося за годы до неприличных размеров, то вряд ли что-то удастся сделать таким образом. На самом деле это может быть не обязательно сайт, а, например, архив фотографий, который вы хотите положить куда-нибудь на удалённый сервер или что-то другое.

Первым делом нужно убедиться в том, что на вашем хостинге есть возможность использования передачу данных по протоколу SSH. Большинство современных хостингов имеют данную функцию по умолчанию или же она может быть активирована опционально (например, так сделано у SpaceWeb). Для успешного и быстрого переноса тяжёлых проектов нам потребуется всего лишь две вещи — консоль (терминал) и утилита rsync. Если вы уже знакомы с ОС Linux, то слово «терминал» вас пугать не должно. В случае использования Windows вам потребуется установить утилиту PuTTy. Если в Линуксе вы недавно и до этого не пользовались SSH, то есть вероятность, что SSH-клиент у вас не установлен. Для проверки этого вы можете просто ввести в терминале команду ‘ssh’ без дополнительных опций. Если вы увидели что-то вроде “usage: ssh…”, то всё ок и идём дальше. Если нет, то необходимо установить SSH-клиент. В популярных дистрибутивах, как Ubuntu или Linux Mint, установка выполняется командой sudo apt-get install ssh.

Итак, SSH установлен на ваш ПК, вы убедились, что работа по данному протоколу доступна на хостинге, теперь можно переходить к основной части. Если вы переносите файлы с локального компьютера на удалённый сервер, то команду rsync следует выполнять на вашей стороне. Если перенос осуществляется с одного сервера на другой, то запуск можно осуществлять на любой из машин.

Пример использования rsync выглядит следующим образом:

rsync -av --exclude='/bitrix/backup' --ignore-existing --progress пользователь@имя_сервера:/путь/к/каталогу/который/будем/переносить/ /путь/к/каталогу/куда/переносим/

Информация об имени пользователя, пароле и адресе сервера должна быть доступна в панели вашего хостинга или же в письмах, присланных вам хостером при регистрации. Далее: первый путь — откуда копируем, второй (после пробела) — куда копируем (т.е. на настоящую машину).

В примере использованы некоторые опции:

-av Совмещает работу в режиме архивирования и указывает программе выводить имена обрабатываемых файлов.

--exclude Исключает каталог или файл. В данном случае я исключаю тяжёлый каталог с резервными копиями.

--ignore-existing Исключает перенос уже существующих в месте назначения файлов.

--progress Отображает ход выполнения в процентах и скорость передачи.

Теперь, чтобы не было непоняток, давайте разберём, как получить точные пути к вашему сайту. Конечно, если это ваш личный сервер, где всё доступно и открыто, то проблем с этим не будет. Но если это обычный хостинг, то вам просто не дадут выйти выше каталога, отведённого для вашего сайта

Нам потребуется несколько простых команд. Здесь может помочь файловый менеджер Midnight Commander (если он установлен на сервере). Пробуем запустить MC соответствующей командой ‘mc’. Если он запустился, то перемещаемся в каталог с нашим сайтом, сворачиваем MC нажатием Ctrl+o и выполняем команду ‘pwd’. На выходе мы должны получить полный путь к текущему каталогу. К примеру, я сейчас выполнил эту команду на хостинге SpaceWeb в корневом каталоге сайта, и получил такой путь: /home/m/********/www/********/public_html/. На разных хостингах пути могут отличаться, так что не ориентируйтесь именно на этот пример. С помощью команды ‘pwd’ получаем пути на обоих машинах, подставляем их в нужном порядке в команду ‘rsync’, жмём Enter, вводим пароль и ещё раз подтверждаем ввод. После этого начинается перенос перенос файлов.

Если на хостинге не установлен MC, то не расстраивайтесь. Командой ‘ls’ определите содержимое текущего каталога, далее командой ‘cd имя_каталога’ переместитесь в нужное место и уже там выполните pwd, как это было описано выше. Если случайно зашли не в тот каталог, то можете вернуться назад командой ‘cd ../’

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *