How do I safely copy the partition from the source hard disk to the target
hard disk? Do I have to create a partition on the target hard disk first?
Can it be of arbitrary size -- for instance, if I create a 1 Mb partition
and direct ddrescue to write to it, will it write off the end and will it
still work? Which Linux tool and syntax should I use to create this
partition, and then copy to it using ddrescue?
It depends what you want to do. If you simply want to access the filesystem, then create a partition (or grow the small partition on the destination drive) and
image the faulty drive to a file.
Then, mount the file as a loop filesystem in linux.:
Assuming you imaged the drive to a file named "file", you would mount the file like this:
sudo mount -t ntfs -o loop,offset=32256 file mnt
Then the mnt directory will contain the contents of the faulty drive (or at least what you were able to image from it)
See here for more details:
Depending on what created the partition table on the faulty drive, you may need to change the offset to mount the partition. If you are able to image the partition (use ddrescue to read from sda1 instead from sda, for example), then you don't need to specify an offset in the above command.
If you are not used to the linux command line shell, feel free to post more detailed questions.
The commands I posted can be run from an Ubuntu live cd. You can
use the partition tool included on it to create a new partition on your destination drive. Gnu ddrescue is not included on the Ubuntu cd, but if you are connected to the internet, you can install it inside the live session.