Try this. If the failing drive is mapped as /dev/hdb and the USB drive is mapped as /dev/sda and if you already have a file system on /dev/sda1 then do this.
Code:
mkdir /mnt/sda1
mount -o sync /dev/sda1 /mnt/sda1
sfdisk -l /dev/hdb > /mnt/sda1/ntfs-partition-layout.txt
dd if=/dev/hdb of=/mnt/sda1/ntfs-mbr.dd bs=512 count=1 conv=notrunc,noerror
dd if=/dev/hdb1 of=/dev/sda1/ntfs-dump.dd conv=notrunc,noerror
sync
Regarding your question, the mount command using the sync option is what you are asking about.
When the commands above finish you will have three files on the USB drive. The first one is named ntfs-partition-layout.txt. It will tell you exactly how many blocks are used for the NTFS partition. This is helpful when you restore the backup image to a new disk. The second file is called ntfs-mbr.dd. It is really not important if you are going to replace the drive. It is really more valuable if you were going to restore the original drive to a given state. The third file is called ntfs-dump.dd. This contains the data in NTFS format.
Now shut down your machine and remove the defective drive. Connect the drive that you intend to use for a replacement and start Linux again. Then use cfdisk to create a destination partition on the new disk. Use the information in the file named ntfs-partition-layout.txt to make the partition as close to the size of the partition on the original disk as is possible. The ntfs-partition-layout.txt file is a text file so you can just type it to see what it says. Use the cfdisk utility to create the new partition on the new drive.
Use the menu options to create a new partition of the correct size, set the partition type to NTFS, make the partition bootable, and write the partition table to disk.
Now you can restore the image of the old drive. First make sure that Linux can see the new partition.
You should see a listing for /dev/hdb1. If you do not then you need to restart Linux or start the Linux hotplug daemon.
Now you can restore the data from the image backup like this. This example assumes that the USB drive is still mounted at /mnt/sda1.
Code:
dd if=/mnt/sda1/ntfs-dump.dd of=/dev/hdb1 conv=notrunc,noerror
sync
Now you can try to mount the partition to see if it worked.
Code:
mkdir /mnt/ntfs
mount -t ntfs /dev/hdb1 /mnt/ntfs
ls /mnt/ntfs
umount /mnt/ntfs
Now shut down your Linux computer and remove the drive with the new NTFS data. Install this drive into the original computer and see if it will boot. You may find that Windows will report that the drive was not cleanly unmounted and will run the check disk utility. This is a good sign. Hopefully the Windows system will run without problems.
Note 1: The new ntfs partition on the new drive must be as close to the size of the original as is possible. If you make it a lot larger than the original ntfs partition then you will probably not be able to use the larger space. This is because you cannot reformat the ntfs partition after the data is restored in order for the file system to see the larger space. Therefore, if you made the ntfs partition on the new disk a lot larger than the original then the best outcome that you could hope for is that all that extra space would be wasted. The worst outcome would be that the restore would fail and you have wasted your time.
Note 2: This procedure will copy the ntfs partition as it is. It will not fix file corruption. It will not defragment the partition. The nice thing about this procedure is that it does not use the ntfs driver. The dd command does not know what kind of data it is copying. Consequently it cannot fix the data errors. If this procedure does not work then it is likely that the ntfs partition on the original disk was not readable by dd due to hardware problems on the original disk. In that case you could use a different procedure with a different recovery tool such as ddrescue.
http://www.gnu.org/software/ddrescue/ddrescue.html The REALLY nice thing about ddrescue is that you can run it multiple times and it will build on its previous successes.
Good luck.