Since Drupal has been coming out with rapid updates, mainly due to security fixes, it's quite cumbersome to have to keep it up to date. However, with the below setup and the script to help with the maintenance, it was a breeze with the last update. The script has been used to upgrade from 5.5 to 5.6 release.
Note: The script does not currently have any checks (extreme alpha stage) and my Drupal installation is not a standard install so usage may vary. Make sure you understand the script prior to running it. Usual disclaimer applies. You will also need root level access to shell to run the script as it is set to change ownership of files and folders using the "chown" command.
My current Drupal install are based on symbolic links for easy maintenance and upgrades. The layout is as below:
/var/www/html, /var/www/html/site_files, /var/www/html/sites are all symbolically linked to the /var/www/drupal-5.x, /var/www/drupal_files, /var/www/drupal_sites respectively where /var/www/html is the web root.
Document Root = /var/www/html -> /var/www/drupal-5.x Files Folder = /var/www/html/site_files -> /var/www/drupal_files Sites Folder = /var/www/html/sites -> /var/www/drupal_sites
Also, any customization to the .htaccess is on top of the default Drupal code. So the script will automatically prepend the data to the upgraded .htaccess file. Since, I also have the gallery module, the .htaccess file is also set to be writable by apache.
Don't forget to set your site in "maintenance mode" with the default theme, and disable all modules prior to the upgrade. Although, I've done some updates with all modules available without any issues. Also, my custom theme resides in the sites folder and stays untouched with the update.
Place the script in "/var/www" (just outside your document root) and run the update via:
# sh ./update_drupal.sh 5.x
Once completed, run update.php to update any changes to the database. Set site back to production mode, re-applying any customization as necessary.