Some background:

I have been helping my uncle, a photographer, maintain a system of storage for all his work (Terrabytes of images!).

We do this by using two external hard drives for his data storage.

One of them we call the "Work Horse" drive, which he uses for working on files in Photoshop etc. thoughout the day. The other, called "Archive", receives any changes (using SyncToy) to the Work Horse on a daily basis.

When the external drives start to get full, the pair of drives are eventually disconnected from the system, replaced by a new pair of drives. The full work horse is then stored on-site , the Archive at a family member's house.

We have used this approach for the past few years - and I am now starting to think about 'refreshing' some of the older drives to prevent the effects of 'bit flux' or 'bit rot'.

The Question:

Is using the bad sector check included in Windows 7's chkdsk sufficient for revitalising every bit of data on these drives? If not, do any of you have a better solution?

Please bear in mind, I am aware using Tape backups would probably be best (as they are purpose built for archiving) but these are not an economically viable option for my uncle at present.

  • 3
    Remember that a complete verification (read+write) of every single bit on massive HDDs will probably take hours, especially if connected via USB (even USB 3.0). That said, if you're looking for a Windows utility check out HDDScan and HDD Tune among others. – Karan Dec 4 '12 at 21:42
  • @Karan thanks, am aware it is a slow process, but could just be left to run over night. The utilities you provided are fine for checking SMART attributes and benchmarking, but not to do a bit-by-bit read or read/write... unless I'm missing something? – killercowuk Dec 6 '12 at 12:01
  • As per the screenshots on the site HDDScan seems to have a surface test feature that has read, erase and verify options, but maybe I misunderstood what they do. – Karan Dec 6 '12 at 14:32
  • @Karan, I must apologise you're spot on. Tired eyes this morning! I'll give these a go +1 for your first comment. Would be good to know if a chkdsk bad block check does something similar. – killercowuk Dec 6 '12 at 15:47
  • I don't think chkdsk does a full read+write+read+compare, but I could be wrong. – Karan Dec 6 '12 at 16:24

Simple yet effective method to refresh data is to use badblocks, it's a linux utility that can check for bad blocks. It has a feature which allows non-destructive read-write test, which rewrites data on hdd by testing pattern, checks that pattern and write back original data.

Almost every linux distribution contains this utility as a part of e2fsprogs package. You can use for example live cd/usb SystemRescueCD

It is also part of cygwin packages, so you may be able to use it under Windows.

I'm not sure about this, but I think that chkdsk is performing only read test.

  • Thanks week! I am a linux user myself, however admit I've never used/seen badblocks before. I'll have a look into it, however I am aware my uncle is not such a proficient PC user. Ideally would be great for him to have a set of instructions I can prepare that uses a native Windows program or app. – killercowuk Dec 3 '12 at 13:07
  • @killercowuk For those purposes I use AutoIT scripts, it's possible to create simple GUI wrapper around executables with just a few lines of VB like code. They have a great forum, where you can find bunch of examples. You can create simple app with one button, pack it with cygwin version of executable. – week Aug 7 '19 at 9:56

While Windows 7's chkdsk option to locate bad sectors (/R) will be sufficient to read most of blocks [*] from a partition, and while there are utilities that re-read a whole physical disk (like mentioned HDDScan, HDD Tune, badblocks), I strongly suggest you to use utility which would re-write your physical disk (or partition) while leaving all user data intact.

For now I know only one such tool (and it's for Windows) -- it is DiskFresh:

DiskFresh is a simple yet powerful tool that can refresh your hard disk signal without changing its data by reading and writing each sector and hence making your disk more reliable for storage. It also informs you if there are any damaged/bad sectors so you know the right time to replace your disk. The best part is, unlike other tools it does all this when Windows is running and it does not interfere with the speed of your work at all.

Main Features

  • A very simple interface with an extremely powerful engine.
  • Can refresh individual partitions or entire physical drive.
  • Can also refresh only the selected area of the disk.
  • Can work in read-only mode too so as to just inform about bad sectors.
  • Supports command line for advanced usage.
  • Can refresh system drive while Windows is running.


DiskFresh is compatible with Windows XP/2003/Vista/2008/7/8/2012 including 64 bit versions. It provides native support for 64 bit versions.

And it's freeware:

Free for private and non-commercial use only. (Can use for test purpose before buying commercial license).

Found today, haven't tested yet. Quoting the review:

In order to keep the data signal from fading, you need to re-write the data. This is often known as “hard disk maintenance”, and should be done 3 or 4 times a year.

While it does not prevent data from being corrupted or deleted, it can go a long way towards ensuring that the magnetic signal does not fade away completely. The way it works is to read every sector of the drive, and then re-write the data found there, provided the drive reported no errors. If this is done on a regular basis, the magnetic signal of every part of the drive will be refreshed long before the signal fades or becomes ambiguous.

This technique also gives the drive controller the opportunity to decide whether to retire any sectors that are becoming too unreliable, before any important data is lost. DiskFresh is not the first program to do this, but it is the first program for the PC that allows you to continue to use the drive while the refresh is being performed.

I find this argument very logical.

So in general my answer is no, using chkdsk isn't sufficient.

[*] Except for volume slack, partition slack or filesystem slack -- see Figure 1 in Data Hiding Tactics for Windows and Unix File Systems (there is some uncertainty about these terms).

... Plus except some parts of MBR, Boot Sector(s) and maybe some metadata from FAT/NTFS structures (I'm not sure about the latter).

  • PS: if anyone knows about such tool for *NIX systems (or another one for Windows), I will appreciate your signal:) – saulius2 Feb 21 '15 at 12:38

Check out ExactFile. It's freeware that will calculate a hash on files and store the hash values. You can then recheck at any time to see if any bits have changed. I have used it on 300 GB at a time and use it for many data transfers and it works beautifully. Very easy to use, too. Note: it will READ your data and confirm that it is still all there but it won't re-write your data.

Perhaps get another disk and copy the "stale" disk to the "fresh" disk and then check with ExactFile to see that every single bit has transferred OK. Do that 3-4 times a year and you'll be OK. If the HDD isn't used for many months, it might start getting mechanically flaky (?). And keep a backup somewhere else too! Perhaps get a disk enclosure or caddy to swap disks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.