Maintaining a Drupal site, or a collection of sites is much easier if everything is kept completely separate--Drupal core, contributed modules, and the site itself.
This is even more important if multiple sites are hosted on the same server. Drupal's own multi-site support can be a nightmare to maintain, believe me! (e.g. when you want to upgrade modules or core).
A must simpler and easily supported configuration is to keep everything separate and to use symbolic links to tie it all together. For example, I keep:
The site has no drupal code in it (except possibly custom code/themes in sites/default)
Instead, symbolic links are used to make it look as if Drupal code appears in all the expected places. This has the following advantages:
The code for this project has just been moved to http://sourceforge.net/projects/drupal-get
Set the DGET variable below to the directory that will contain the dget utilities subdirectory and svn to download it:
DGET=/root/dget
svn co https://svn.code.sf.net/p/drupal-get/code/trunk $DGET
bash $DGET/setup.sh $DGET
It can be kept up to date using:
DGET=/root/dget; svn up $DGET; bash $DGET/setup.sh $DGET
Can be found on the old project page at: http://drup.org/drupal-site-maintenance-using-symbolic-links