Tool to read all blocks from HDD and write it back
I need tool to read each sector(block) from HDD and write it back to same HDD. Disk is big and so it is not possible to use image creation tools (backup/restore).
Purpose of it - to avoid/resolve Silent Data Degradation (bit rot, decay of storage media,UNC sectors).
Single UNC sector (soft-bad error) could caused Read Instability and as result whole HDD disconnected from OS. I am personally experienced such issue and it disappears when I write zeroes to that UNC sector. Question is - how to solve this problem on regular bases.
You can do a "non-destructive read-write test" using "badblocks", which has exactly this effect. It transparently backups the data, tests the sectors and then writes it back:
badblocks -nsv /dev/sdx
There are several.
In order of thoroughness (which generally also indicates the time they will take to run) I recommend:
Run Seatools for DOS (not the Windows version; download the ISO), and choose the 'LONG Test'. This program is free.
Run HDD Regenerator. This program is not free ($99 US).
Run SpinRite (running the executable under Windows will extract an ISO that you can burn). Choose level 2 for your purpose or level 4 for thorough testing. This program is not free ($89 US) and is the only one that I know that can often recover data from damaged sectors; this may take a long time though. It comes with a money-back guarantee.
All three programs scan the hard disk at the physical level, and should be run from a bootable CD.
[BTW You're not mentioning your OS. I know SpinRite does not care about the OS (it works on a lower level), for the other two you'd have to check.]