I would recommend using ddrescue. It can copy block by block, can skip over slower or error prone regions to prioritize good sectors.
I used it to pull 2tb from a dying drive. It was able to pull 1tb in about 4 hours, and took about 2 weeks to clone the remaining 1tb. But it successfully pulled all data with no errors in the end. Saved my 8tb raid array.
Thank you very much, I'll be checking this out later