The method you use for the copy isn't really significant. You can BCP to flat files, or you can just use an INSERT if both databases are on the same server, or DTS if they are on different servers.
The trick is to copy data until the copy fails (due to the problem with the disk), then find a way to resume the copy just past the problem. The easiest way to do this is using PK values to copy what you can, then move a few PK values higher and start again. If there was only one flaw, then you can copy from the low PK values up, then from the high PK values down and you will have all of the recoverable data. If you have more than one flaw, then you'll have to fuss with the copy a bit, trying to "jump" the flaws.