Upgrade wordpress quickly in 3 easy steps from UNIX shell prompt

by on November 27, 2006 · 13 comments· LAST UPDATED September 15, 2008

in , ,

Wordpress Logo

Since I use wordpress as CMS for 2-3 different websites, upgrading wordpress is an essential task for me. Upgrading wordpress from shell prompt is the easiest thing.

Howto update wordpress

Please note that if you are not comfortable with UNIX shell prompt (IF YOU ARE new to UNIX/Linux), please follow traditional way of upgrading wordpress and DO NOT use following instructions ;)

Step # 1: Backup existing database and wordpress directory

Type the following commands at shell prompt:

$ mkdir /backup/wp/28nov2006
$ mysqldump -u user -p WP-DATABASENAME > /backup/wp/28nov2006/blog.db.sql
$ tar -zcvf /backup/wp/28nov2006.tar.gz /var/www/html/blog

Step # 2: Download latest wordpress CMS

$ cd /tmp
$ wget http://wordpress.org/latest.zip
$ unzip latest.zip

Step # 3: Overwrite all new files

$ cd /var/www/html/blog
$ cp -avr /tmp/wordpress/* .
$ rm -rf /tmp/wordpress /tmp/latest.zip

Open a browser and run update script such as http://yourblog.com/wp-admin/upgrade.php

And you are done. Thanks to UNIX shell access. It just took less than 1 minute!!! Replace path names and database name with actual values.

In case, if something goes wrong, you can always restore old database and files from /backup/wp/28nov2006 directory.

PS: I wrote this because some one recently asked me how to upgrade wordpess from command line.

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 13 comments… read them below or add one }

1 Igor November 28, 2006 at 8:15 am

hey, you cloned my script i wrote recently! ;-)

little sidenote: tarballs (.tgz) are smaller than zipfiles… but that doesn’t matter these days.

have fun!

Reply

2 MichaelB January 7, 2007 at 3:42 am

Thanks, this worked perfectly and saved me a huge amount of time.

Reply

3 Chris March 5, 2007 at 3:13 am

Be very careful with this method. Since it is basically overwriting existing files with new ones etc it is NOT removing depreciated files which may or may not have security holes in them.

Reply

4 Life focus pro March 5, 2007 at 3:48 pm

Yes, it sounds very fast and easy. I just wish I had access to the schell.

Reply

5 fak3r August 6, 2007 at 4:14 pm

Thanks for the script, I’ve changed it to make it more generic, can be run via command followed by the instance name of your site’s directory.

#!/bin/bash
# Modify these variables for your system
BLOG_DIR=/usr/local/www/data-dist
BACK_DIR=/root/wp
# Do not modify these variables
DATE=`date +%Y.%m.%d`
INSTANCE=${1}
# If there's no variable, explain usage and exit
if [ -z "$1" ]; then
        echo "usage: $0 "
        exit 0
fi
# Backup existing database and wordpress directory
mkdir -p ${BACK_DIR}/${INSTANCENAME}/${DATE}
mysqldump -u root -p ${INSTANCE} > ${BACK_DIR}/${INSTANCENAME}/${DATE}/${INSTANCE}.db.sql
tar -zcvf ${BACK_DIR}/${INSTANCENAME}/${DATE}/${INSTANCE}.tar.gz ${BLOG_DIR}/${INSTANCE}
# Download latest wordpress CMS
cd /tmp
wget http://wordpress.org/latest.zip
unzip latest.zip
# Overwrite all new files and cleanup
cd ${BLOG_DIR}
cp -avr /tmp/wordpress/* .
rm -rf /tmp/wordpress /tmp/latest.zip
exit 0

Reply

6 nixCraft August 6, 2007 at 4:33 pm

fak3r,

Nice script :D. Few things
a) change wget http://wordpress.org/latest.zip to
wget http://wordpress.org/latest.zip -O latest.zip

b) add little protection before cd ${BLOG_DIR}

if [ $? -eq 0 ]; then
   cd ${BLOG_DIR}
cp -avr /tmp/wordpress/* .
rm -rf /tmp/wordpress /tmp/latest.zip
else
  echo "Error failed to unzip or download failed"
fi

Reply

7 Video Game Sigs May 3, 2008 at 3:50 pm

Thanks to this post I was able to upgrade WP on my sites in no time. I dreaded having to wait for the slow ftp process to complete with my sites being down.

After testing the process on one site and seeing how fast it was, I did not even bother activating the maintenance mode plug in on the other sites. My users tend to get pissed off when the site goes down for a few mins and following the steps you provided prevents this.

One thing I did before copying over the new WP files to the site, was delete the wp-contents folder from the new WP files. I did not want it over writing what I had in my existing WP-contents folder (plug-ins and themes)

Thanks again.

Reply

8 Wazzup August 18, 2008 at 7:28 am

Is there a way to perdform the actual upgrade from the command line as well…

that is this part: “Open a browser and run update script such as http://yourblog.com/wp-admin/upgrade.php

Reply

9 will January 30, 2013 at 10:18 am

I think not possible as requires user input

Reply

10 Simon J Mudd January 7, 2010 at 1:29 pm

Handy to know but misses an important point: users and permissions on the server. This can make or break things quite significantly on a box. I’ve found the instructions on what the correct ownership of the wordpress files to be either missing or not clear to me.

So should ALL wordpress files be owned by the apache user, or perhaps owned by another user with the group set to the group the apache server runs as? That’s what is not clear to me and could be better documented.

Reply

11 nixCraft January 7, 2010 at 7:38 pm

@Simon J Mudd,

Generally web servers don’t care about file permission as long as they have read permission for a directory. However, before running this go to your blog directory and run the following to see permissions. Note down them:
ls -l
Once new file copied just run chown in a blog dir:
chown -R user:group .

Reply

12 blancpain December 5, 2010 at 2:30 pm

In it something is. Earlier I thought differently, many thanks for the help in this question.

Reply

13 n2j3 February 11, 2011 at 9:41 am

lifesaver. thanks :)

Reply

Leave a Comment

Tagged as: , , , , , , , , ,

Previous post:

Next post: