Yes, it's possible using dd in xPUD, and it's success would depend on how far gone the drive is, eg; the ability for dd to read the data on the old drive.
Lets say the old drive is sda and you attach a new drive which is assigned as sdb. The command to clone the drive (block by block copy) would be:dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror
dd = the utility to use
if = the source drive
of = the target drive
the conv=notrunc,noerror option tells it to continue on errors, such as blocks that cannot be read.
There is no way to track the progress with this method, and it can take quite a long time, especially if it has trouble reading from the old drive. You would simply have to wait until the Terminal window returns to a command prompt.
With a bit of searching you will find there are ways to speed up the cloning by changing the sector count to use, and a method for tracking the progress as well - the above is the most basic method and recommended for most users unfamiliar with the linux environment.
It is possible as well that even after successfully cloning the drive, the boot sector and/or master boot record would need to be repaired. Bad blocks could cause inconsistencies as well - some file corruption or missing files, etc, which may or may not affect the use of the operating system. Basically, it's success is a craps shoot - some get lucky, some do not.