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:/ he.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.
If you don't have root on your server, it may show databases you don't have access to. What you'll have to do here is "force" mysqldump to keep doing the backups even if it gets error messages. The flag for "force" is "-f".
mysqldump -umyuser -pmypassword -Af > dump.sql
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.
About the Author
Article by Robert Plank
Want to pick up more useful PHP and programming skills,
even if you aren't "the programming type"?
Subscribe here -- http://jumpx.com/newsletter