I like iwoloschin's idea, because dd does a "proper" clone of your data. Some notes from my experience -
1) dd will copy every bit, even free space. So your old 100GB partition of which you have used 50GB will still create a 100GB img. cp, on the other hand, will only take note of the files you have used.
2) As such, you won't be able to use
dd if=/dev/sdX of=/dev/sdY
if your destination drive is even slightly smaller than your original. You could try it with partitions, though!
3) I suppose, to get around the partition resizing issue, you could partition first and then use dd