yes, that works if the drives have the same geometry, but I find that they almost never do -- even if you buy, say, two Maxtor disks with what looks like the same name 6 weeks apart, the geometry is usually different.
There is a more generic (and also faster) procedure which I use in a different way to make an "image backup" of my systems (and also use for cloning purposes). There is an old post of mine at
To go from disk to disk, make sure that the *new* disk is what it's gonna be later, such as /dev/hda. Your existing boot disk would be, say, /dev/hdc temporarily.
Then boot a rescue disk (in that post I have a pointer to one that I maintain that will do the trick, but the Redhat disk will suffice). Then, on the virgin /dev/hda make matching partitions as they are on your "good" boot disk. Be very careful not to confuse the disks... you can use fdisk and type the numbers, or use sfdisk -d to capture the partition info and make the other disk the same. Format the file systems on the new disk.
Then, mount each partition pair ( eg /dev/hda1 (=to) and /dev/hdc1 (=from) ), and cp -a or tar the contents from -> to.
Finally, end up with your later / partition mounted, in this example, as /to and run
lilo -r /to
(that's why it has to be what it will be later, e.g, /dev/hda )
The reason why this is faster in addition to geometry-independent is that with dd you copy each byte on the disk, even the unused ones. With that procedure, you copy only the actual files, which can be a lot less.
Hope it helps,