У меня есть следующая штука: система, на которой базируются сайты разных учреждений. Код один, но внутри есть куча возможностей персонализации сайта. Разработка идет на моих серверах, на последнем из которых есть скрипт, генерирующий так называемые "обновления", т.е. есть версионность.
Все клиентские сайты имеют функционал по проверке наличия этих самых обновлений. При этом, если за прошедшее с последней проверки время, было выпущено более одного обновления, то они естественно конкатенируются в нужном порядке. Каждое обновление включает в себя (в общем случае) 3 типа данных: файлы, sql обновления, доп. инструкции в своё формате (удалить / создать папку, установить / снять права и т.д.)
Собственно, как эти обновления устанавливаются: когда админ сайта жмет кнопку "проверить наличие" и далее "установить", ему предлагается ввести данные ФТП, где у него расположен этот сайт. И далее скрипт, встроенный в систему, 1) сливает обновления с моего сервера; 2) заливает их в нужную папку на указанный ФТП; 3) распаковывает (раскладывает всё куда надо); 4) выполняет sql dump (если он есть); 5) исполняет включенные инструкции (если они есть).
Вот как-то так. Почему собственно через ФТП? Ну думаю, и так очевидно, скрипты вряд ли будут иметь права на shared хостингах для перезаписи самих себя или соседних.