Most people who become sysadmins are simple the guys and gals who were playing around with from an early age and got good at it. This playing around led them to discover things like the concept of services, the registry 'runas' etc on Windows, and grep, init and symlinks on Linux.
This is wholly inefficient.
Tinkering is important, but structure is better. Learn the concepts behind the systems you administer, the correct way to do things, and where everything fits in and how it interacts. That transforms you from a tinkerer to a professional.
The best way to do this? Easy: Find out what the certifications are, and get the certification books. Read the books, but what you're really after is the Table of Contents - that's your syllabus. That will teach what topics are important, and what can be safely ignored.
Armed with that syllabus, you can do research on the 'Net to your hearts content, at your own pace. The beauty of the profession is that with virtual machines, you can learn the vast majority of what you need to on your own.
I've found for Linux, that RedHat / Fedora has very comprehensive documentation, that will teach you alot. There's also a Debian Handbook that I encountered a few months ago. There are a lot of sites dedicated to Windows as well, and Microsoft's own MSDN is quite good.
VMs are also going to be your bread and butter for learning most things. You can set up clusters very easily with just a couple of VMs. MSDN subscriptions will let you set up test environments for Windows, and as otherwise mentioned, CentOS is free.
I believe the best way to learn a concept is to have a running system that breaks. You'll find out a lot of new information by just trying to debug the systems. Bonus points if the computer is physically inaccessible and you manage not to lock yourself out of the box remotely.
One thing that you'll love about VMs is snapshots. The ability to revert to a point in time gives you the ability to mess up without consequences. Take full advantage of this.
You'll probably hear this a lot but start by creating your own Linux VM. CentOS is a free distro and actually maps exactly to Red Hat Enterprise Linux so you can put on your resume "I know how to administer RHEL" which would actually be recognized by an interviewer. Then start doing little challenges.
Ex: Write a bash/perl script which takes a word and a number. Use curl to download number of images from flickr with the search term.
Or: Write a kickstart file which sets up an apache server and is configured to serve out a static page you created.
Or: Using ping, awk/sed, grep etc, write a bash script which emulates the tracert command
Bonus points for all of the above: write your scrips in vim/emacs.
every time you don't know what command to use, find a random script in the /etc directory and try to understand what it does. When you find a command you don't know, read the man page, then google it b/c man pages can suck a lot.
Use version control. For everything. Git gets a lot of press on HN but Subversion will be recognized by a lot more people who would interview you outside of the startup world (though this is changing slowly).
Some people recommend you get familiar with your shell/editor preference files (alias commands, change colors, change shortcuts, etc). I'd argue that effective working sysadmins can get by with the defaults in bash and vim or emacs (though i feel vim is more likely to be installed on barebones Enterprise Linux distros which happen to be the ones you actually would work on)
I'll setup a virtualbox for it, that will probably be the easiest. :)
Thanks for the exercises! I'm having to use vim (or vi) for the little things I do on a VPS I got. Oh and, I have used SVN, Mercurial, and Git. I mainly stick with Git (or mercurial) because of the free private repos bitbucket offers.
Thanks a ton! :) I really appreciate it!
2. Get a job as a "Junior" Sysadmin somewhere. Once you know enough to be dangerous you can learn how to be great by working with great people who have more experience.
3. Learn to program. Perl/Python are probably the best choices. The better programmer you are the better syadmin you'll be. Learn how to write long running daemons, network servers, and automation software.
A lot of what you need to learn to do really interesting sysadmin stuff (like automating and controlling hundreds of servers, resource management, mass storage, fault tolerance, power, cooling, advanced networking) only comes into play when you're dealing with hundreds of thousands or millions of dollars worth of equipment. Everyone is pretty much forced to learn this stuff on the job. Even a well equippped lab couldn't do a great job at preparing you for real world
Most of all: Find useful things you want to be able to do and then figure out how to do them. Then figure out how to do them better, cleaner, faster.
Good luck. Feel free to shoot me questions. I've setup and run datacenters many times and I love this stuff.
There's a rather large number of books you would have to pick up, if you wanted to go that way.
What follows is a set of guidelines, not rules.
You want to know at least one scripting language (Perl, Python, Ruby), the Unix shell, and SQL. On the Windows side, you need to know Powershell, or equivalent scripting language.
You also need to grok logging, operating systems, and hardware to some level. (At least to be able to know when to make tradeoffs between space and access speed).
Knowing various models of IPC is useful (processes, threads, evented models).
You need to know networking (configuring a Cisco or Junpier device is a good, but not required skill). Knowing the fundamentals of routing, BGP, OSPF, IP, TCP, UDP, etc are essential.
Amongst common technologies, you need to know DNS, email, webservers, proxies, file storage and access.
Since you mentioned Quora, here's my answer to a similar question from there: