Eu geralmente configurarei algo assim.
/var/www/version1
/var/www/version2
/var/www/production (document root, symlink -> current version)
Então, basicamente, você só faz o upload para um novo diretório, assim que o upload for concluído, ajuste seu link simbólico e tudo será alterado de uma só vez.
Quando os aplicativos são projetados de forma a separar o código do aplicativo ( como deveriam! ), a vida é muito mais complicada. Você pode ter que fazer algo com um sindicato.