Zend certified PHP/Magento developer

Would a badblocks read-only test be sufficient to verify data integrity/drive health? (Badblocks/Linux)

As the title suggests I have a HDD which I haven’t powered on for the last year or so and I wanted to check for bad sectors. Usually I do a destructive 4 pass read-write test with badblocks to test new drives badblocks -b 4096 -wsv /dev/sdx. Since the disk is filled to the brim with data and I don’t have any other spare drives to migrate the data to I was thinking about doing a read-only pass with badblocks to see if the Relocated Sector Count value changes. I would do that by running a smart test smartctl -A /dev/sdx before and after the read-only test and see if there is any difference. Is this a valid way of figuring out the amount of bad sectors?

Would the read-only test would be able to determine if there is any data corruption? Are there any better and more recent tools for this job besides badblocks?