In looking for an answer on a computer issue the difference between dd and ddrescue I came across an interesting concept that I have been thinking about. The application is practical for most things we do if you understand the why and apply it properly. As Journeyman Geek says ‘Most UNIX graybeard would say “Use the big bashy thing” – it’s the “right” way to do it.’ He may not be agreeing with what he attributes to the graybeard but I think it is genius!
Bashing away at things may seem like the wrong choice when you aren’t trying to break things but in most cases, we have to make a compromise between speed of getting the thing done and accuracy. Both of these are things that we strive for speed … accuracy. It’s the holy grail of productivity to achieve both in any project or endeavor be it work or personal.
In computing specifically you need accuracy or things break very easily, however, there is a little more to it than that. There are known problems with accuracy in computing such as bit flipping. I learned about it from Defcon years ago you can see the talk here: Bitsquatting. You can also read more here.
Basically, due to faulty equipment at some point along the way of you typing in amazon.com you could actually end up at aeazon.com (as an example). This is due to one of the zeros flipping to a one or vice versa.
And that might be a poor demonstration of what I am getting at here, but let me try to just break it down a more simple way. If the Big Bashy Thing succeeds in making things work it likely did it faster and with enough accuracy. So we should try that first then get more fine-grained especially since some operations like ddrescue can take days to complete where dd might only take half a day and output the same quality even if it is a little less accurate.