I have a 2TB Seagate HDD that I believe has reached the end of its life in my primary Windows 11 box. It is the data drive - it contains things like video games, source code (backed by a remote repo), documents (backed by Google Drive), and lots of random stuff (e.g. Stable Diffusion checkout). For most intents and purposes, its loss would not result in a noticeable data loss, but I also don't want to re-create everything on it.
After noticing some performance issues with it I bought a new 4TB WD Red HDD and tried transferring all files to it using ROBOCOPY (for the reference, I think the first incantation was "robocopy D:\ H:\ /MIR /XD $RECYCLE.BIN "System Volume Information" although MIR is quite meaningless for a brand new drive).
That's when I discovered that the source drive had issues, with files failing the CRC32 check. I re-ran ROBOCOPY anyway with /R:0 /W:0 and it copied a bunch of data, easily 90% of the content, but now I don't know what's missing. Since I have WSL, I tried ddrescue on a few files with encouraging results (e.g. one wave file recovered without any noticeable issues) whereas a random Java file from one of the myriad Android SDKs appears to be a bit sus.
This gives rise to a number of questions:
Given that I have evidence my drive has a non-trivial number of bad sectors to the point that it lead to (alleged) data loss, what is a strategy for meaningfully copying everything? My initial thought it trying to find the delta at a fairly high-level directory level and delete anything that is easily downloadable (it's better to not have an Android SDK 21 than to have random java files missing or corrupt). The trouble is that if feels tedious - I am guessing the problem is widespread and random. What would be a good tool (Windows or Linux) to give me a summary of discrepancies? What will have good usability?
More importantly, I was obviously caught off-guard by bad sectors/data corruption. What are the best practices, on Windows, to prevent this? Is there a regular scan job I can do (maybe weekly, at night) to do a full check? chkdsk ok? A full HDD check is expensive to run, are there tools that can do this either randomly or incrementally?
Now that I've established the HDD is "bad", how do I determine the amount of bad? Can it be repurposed for something more volatile if I do a full format, hopefully remapping bad sectors? For instance, I currently have another PC serving as a media center which uses an external HDD. For esthetical reasons, would it make sense to copy data to my bad HDD and keep using it until it fully dies? Or is it just begging for trouble? Should an HDD be tossed at the first corruption, meaning that whatever magic it was using for its sector remapping got pushed beyond breaking point?