Here are some general instructions I wrote up when I decided to re-partition my drives.
# Clone a distro to another drive or move directories around
Install drive in box (assuming IDE1 slave for examples) and ensure BIOS can detect it. Boot into Linux and login to your user's account. Open an x terminal and partition and format the new drive as you wish
[fancy@tinwhistle fancy]$ su -
[root@tinwhistle root]# fdisk /dev/hdb
Exit with w
to write the partition table.
Format the partitions with the chosen filesystems:
mke2fs /dev/hdbX -> ext2
mke2fs -j /dev/hdbX -> ext3
mkswap -> swap
mkreiserfs -> reiserfs
mkfs.xfs -> xfs
Make directories for source and destination mount points. You need these to keep out of an endless loop of copying itsself over and over.
[root@tinwhistle root]# mkdir /mnt/source
[root@tinwhistle root]# mkdir /mnt/destination
Mount your os partitions that you want to clone on /mnt/source
Mount your partitions on the new drive, making directory entries for your separate partitions (/boot, /home, /var etc.). If you are just copying a directory such as var, just cd to the directory you wish to copy instead of mounting partitions on /mnt/source.
Now, cd to /mnt/source and pipe it over with tar
[root@tinwhistle root]# cd /mnt/source
[root@tinwhistle source]# tar cf - . | (cd /mnt/destination && tar xBfp -)
Edit /etc/fstab as needed, install the boot loader if you moved a whole distro, and it should work when it is installed in it's final position.
I don't know of any program that will allow Microsoft filesystems to be converted into Linux native ones. Copy the stuff you need to where you have room, then format the Microsoft partition in the format you want and move the stuff back.