Прежде всего, познакомьтесь с системой контроля версий Subversion, Git, Bazaar, Mercurial и тому подобное. Они являются сетью безопасности, которая может спасти ваш бекон, потому что они сохраняют КАЖДЫЕ изменения в КАЖДОМ файле в вашем наборе файлов.
Тогда, как правило, у меня есть локальный сервер разработки, а также поддомен (staging.example.com) на рабочем сервере. Затем я делаю тяжелую разработку на локальном сервере разработки. Затем я использую SVN для архивирования всех изменений своего сайта. Затем, используя учетную запись оболочки на производственном сервере, я проверяю новую версию программного обеспечения в промежуточном поддомене. Если там все работает нормально, я могу обновить действующий сайт, используя всего одну проверку SVN.
Я также слышал о людях, которые размещают символическую ссылку в месте, где должен быть корень сайта (/ var / www / public_html), который указывает на действующий каталог (/ var / www / site_ver_01234), а затем настраивают новая версия в параллельном каталоге (/ var / www / site_ver_23456). Наконец, просто пересоздайте символическую ссылку, указывающую на каталог новой версии. Переключатель мгновенный и прозрачный. Извините, но я не совсем ясно об этом методе, я читал об этом некоторое время назад, но сам никогда не пробовал.
Я также посмотрел на Bazaar (еще одну систему управления версиями), в которой есть плагин, который автоматически передает любые измененные файлы на заданный сервер каждый раз при регистрации версии.