Here’s an easy way to backup your web site’s files and database (worth thousands of dollars, no doubt) that costs $0 to learn and perform. It only takes seven easy steps.
You don’t need to know a lot about how to use Unix or how to use databases like mySQL. The only real tool you need is a telnet client. Also, you need to know a few commands which I’ll show you now. (You could even write the commands I’m about to give you on a cheatsheet.)
STEP 1: CONNECT & GET IN THE RIGHT FOLDER
The web host you’re trying to back up needs to allow shell access (most do these days).
If you have a Windows computer, download a program called “PuTTY” which you can use to login in your web host’s shell. Search for “putty ssh” on Google or get it here: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
Open up PuTTY and at the top type in your hostname (your web site address without the http or www, just “yourname.com”). Your web host either uses SSH or telnet, first try logging in using SSH and if it won’t connect try it using Telnet. Click the “Open” button at the bottom to connect.
When it connects you will be asked for your account’s username, and after you enter that, it will ask for your password. If these both take, you’ll see a command prompt of sorts. What you have to do is browse to the document root, depending on your host it’s usually a folder like “public_html” or “wwwroot”.
If the wwwroot or public_html folder has more folders inside of it, in the form of yourdomain.com, don’t browse into them yet, just stay in the folder you’re in.
Browsing in the Unix command prompt is just like DOS, to view a folder type “dir” or “ls”, and to go into a certain folder type “cd foldername”. If you messed up you can type “cd ..” to move up one level.
STEP 2: BACK-UP THE DATABASE
The first step if you’re backing up a site is to dump your mySQL database. To do this obviously you need the mySQL username and password you want to back up. If your mySQL username is “myuser” and the mySQL password is “mypassword”, you’d type:
mysqldump -umyuser -pmypassword -A > dump.sql
mysqldump is the program we run to dump the database into a file, then we type “-u” followed by the username (no spaces) and “-p” followed by the password (also no spaces). The uppercase “-A” tells the program we want to dump every database this user has access to. It MUST be an uppercase A.
The “>” afterwards says we want to put this program’s output into a file (otherwise it would show up on the screen) and “dump.sql” is the name of the file we’re going to dump to.
This may take a while depending on the size of your database. Be patient. Once you have a command prompt again, it’s done.
STEP 3: BACK-UP YOUR FILES
Now you can put everything into one big file, which you can easily move over to the new host in one go, instead of one at a time. Unix doesn’t let you create Zip files, but you can create a TAR (Tape Archive) which just rolls a bunch of files together without any sort of compression.
To create your TAR archive, type:
tar -cvf dump.tar *
The “-c” tells the program to create a new TAR archive, the “v” following right after says to be verbose, in other words, give us the name of every file that’s being added to the archive. “f: means we’re saving this to a file, as opposed to showing it on the screen (you’d just see junk).
“dump.tar” is the name of the file we want to save into, and the “*” means we want to put everything into this TAR archive — files, folders, everything.
You may get some sort of warning about not adding dump.tar to the archive, that’s no big deal because we don’t want this file to add itself.
Your files are backed up. At this point it’s time to move things over to the next host. There’s a way we can do this without you having to download the whole thing, and re-upload it.
STEP 4: ARRANGE YOUR FILE FOR PICKUP
Remember how I said when you were in “wwwroot” or “public_html” not to browse into the folder containing a domain name? Well now it’s time to move that dump over into one of them so it can be picked up.
If one of your folders is, say, yourdomain.com, type:
mv dump.tar yourdomain.com
This moves “dump.tar” into the folder “yourdomain.com”.
STEP 5: MOVE THE NEW FILE OVER
Login to your new host. Browse to its “wwwroot” or “public_html” folder.
Most hosts include a program called “wget” which works sort of like a browser in that you give it a URL to pick-up that it loads. Only this browser also saves the file you want to load.
If your old host was at yourdomain.com, you’d just type:
wget http://www.yourdomain.com/dump.tar
This will load that URL and save it as “dump.tar”. You’ll probably see some sort of progress indicator as it goes.
STEP 6: DECOMPRESSING THE FILE
Once you have the file, you use that same TAR program to decompress it. Type:
tar -xvf test.tar
The “v” and “f” are still there, but instead of “c” (create) we use “x” (extract). This will unpack each file and let us know which one it’s working on.
STEP 7: RESTORING THE MYSQL DATABASE
Before you can put the mySQL dump back into the database, you have to go into this new web host’s control panel and create blank databases with the same names as you had before.
You also have to create a mySQL user and make sure that user has access to all those databases you’ve created.
Once that’s done find the dump.sql that was unpacked with all of the other files.
Instead of using the program “mysqldump” to dump the files, we use the program “mysql” which let’s us put commands into the database. That’s basically what a dump is, a file full of commands that, when run, will recreate the old database exactly.
This time we don’t type in the database name right away. To get into mySQL from the command prompt, type:
mysql -umyuser -pmypassword
Where “myuser” and “mypassword” are your mySQL username and password. Once you’re in you’ll get kind of a weird looking prompt. All you have to do at this point is type:
source dump.sql
This says, open up the file dump.sql, read through it and do whatever it says to do in that file. You will see a bunch of lines telling you a command has been entered (0 Rows Affected, 1 Rows Affected, something like that).
If everything goes smoothly, type “quit” and you will be back in the shell.
You’ve just moved one site (or a bunch of sites) over from one host to another in about 5 minutes.
Article by Robert Plank
Subscribe to the free opt-in newsletter “JumpX E-Magazine” for lots more PHP help.
http://www.jumpx.com/newsletter