Let me expand a bit on tcrosley's excellent answer from yesterday. Let's define first how accurate you wish to be. You say 30 ppm, so that means more accurate than two seconds (exactly 2.592 seconds) drift per 24 hours.
You could follow tcrosley's idea of locking on to the power grid. And with it, you could do continual adjustment of the device if it's continuously connected to the grid.
There's a couple of other alternatives. You could use GPS time. There's an excellent article "The Science of Timekeeping", which is Hewlett-Packard's Application Note 1289 and by quick googling, it's available for example here. Did you know that Hewlett-Packard started by doing oscillators and frequency counters?
Using the atomic clock provided by GPS might be easier than you think. Your computer might already use NTP protocol to keeping its time in sync with UTC. If not, you can install a NTP client to your computer. NTP servers generally derive their time from GPS atomic clocks and in any case the accuracy is way better than 2 seconds per day. So calibrating (checking) the speed of the microcontroller's oscillator might be as simple as sending the microcontroller's "time" periodically to a PC and writing a small PC application to display the time and compare that to the PC's NTP corrected time.