Как синхронизировать файлы сайта с локального ПК на сервер?

Я делаю сайты и меня давно волнует вопрос синхронизации того, что я написал, с рабочей версией на сервере. Существует ли готовое решение для моей задачи? Возможно, кто-то уже использует готовые решения, которые я не могу найти, т.к. , возможно, не знаю как правильно спросить гугл.
У меня, в принципе, есть рабочее решение этой задачи, но, мне кажется, есть более изящные решения.

Имею:
- Сайт(ы) на личном компьютере (win) которые вертятся на денвере. Они используются в процессе написания сайта
- Рабочие сайты на сервере (*nix).
- основной язык - php

Необходимо:
- залить новые и изменившиеся файлы с рабочего компьютера на сервер.
- контролировать удаленные с сервера файла и иметь возможность их заливать заново
- удалить с сервера файлы, которые были удалены на рабочем компьютере
- (желательно) возможность создать backup файлов на сервере (предыдущая версия сайта) и быстро восстановиться, при необходимости
- (желательно) иметь возможность
- иметь возможность учитывать фильтры файлов (blacklist, greenlist) - правила того, что можно закачивать и чего нельзя. Фильтры могут быть и вида /path/to/*/ignored/files
- по сети должен передаваться минимум данных. Т.е., исключаться игнорируемые данные и, по возможности, сжимать поток. Это связано с использованием не особо шустрого интернета

Стандартные решения работающие по FTP и SSH меня не устраивают, т.к. на сайте может быть очень развитая структура папок, а так же могут быть папки содержащие тысячи файлов. При таком решении для обновления одного-двух файлов происходит сканирование всего каталога сайта, что отнимает кучу времени. Так же возникают проблемы при наличии папок с тысячами, а то и сотнями тысяч файлов, которые не надо синхронизировать.

Возможно, в некоторых случаях, мне подойдет git, но, насколько понимаю, требуется его установка на сервер. Если я делаю сайт на своем сервере, то установка необходимого ПО - не проблема. А вот если необходимо сайт перенести на сервер заказчика и поддерживать его, то возникают сложности, т.к. это может быть и shared-хостинг, где админ не поставит стороннее ПО или может отсутствовать доступ по SSH. В этом случае git я уже не смогу использовать.

На данное время уже много лет моим решением является установка скрипта на сайт, который осуществляет синхронизацию. Выглядит процесс примерно так: Изменил файл(ы). Необходимо их скинуть на сервер. Запускаю скрипт на локальной машине через браузер (т.е. обращаюсь на mylocalsite/sync.php). Нажимаю "получить список" и вижу список новых, измененных файлов (проверка по времени файла), удаленных (либо удалены с локальной версии, либо добавлены на сервер). Далее, те файлы, которые требуется обновить я отправляю на сервер. Если файлов очень много, то я могу все изменения скинуть в папку сервера "upgrade", а потом сразу все все обновить.

Прошу подсказать пути решения задачи.
  • Вопрос задан
  • 3863 просмотра
Решения вопроса 1
v_decadence
@v_decadence
Если Git не подходит только из-за невозможности установит его на сервере, то попробуйте Git + git-ftp. Git нужен только на локальной машие, а git-ftp заливает/удаляет только изменившиеся файлы с момента последней синхронизации. На сервере нужен только FTP.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
bk0011m
@bk0011m
Системный администратор
rsync? На сколько я помню есть порт для Wndows
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы