It's all in the box, though a bit more complicated and not so sophisticated.
For a one-to-one copy or image of a disk of partition, use dd (or cp) on your device files. It has a some disadvantages:
- The source and target disk/partition need to have the same size.
- No intelligence inside. It copies everything, also the unused tracks.
- You'll probably need fdisk (the linux one) to adjust the system-id.
To compress images, use bzip2. Very powerful and suitable for this type of files.
For linux file systems, if you just want to copy the files, use cp -d -r -p. This command also copies ownerships and permissions.
If you want resize-able partitions, you should take a look at LVM and reiserfs. I'm using it for a couple of years and it works very well for me. I split up my large hard disks in a number of partitions and add them to a volume group as separate physical volumes. This gives me some flexibility: in LVM, it's one big pool of disk space but I can still assign a part of my disk to another OS.
Another option is to buy an up-to-date version of Norton Ghost or PowerQuest PartitionMagic. More recent versions support more recent file systems.
Hope it helps.