1<!DOCTYPE html> 2<html lang="en"> 3<head> 4<meta charset="utf-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1"> 6<title>Shirt Pocket Watch</title> 7<link rel="preconnect" href="https://fonts.googleapis.com"> 8<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 9<link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,[email protected],800&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet"> 10<link rel="icon" href="/favicon.svg" type="image/svg+xml"> 11<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32"> 12<link rel="apple-touch-icon" href="/apple-touch-icon.png"> 13<link rel="stylesheet" href="/css/site.css?v=1789385552"> 14<link rel="stylesheet" href="/css/blog.css?v=1784744508"></head> 15<body class="" style="background:#eef1f6;"> 16<div class="sp-page" style="background:#eef1f6;"> 17 <!-- NAV --> 18 <div class="sp-nav"> 19 <a href="/" class="sp-nav-logo"> 20 <svg viewBox="0 0 44 48" width="30" height="33" class="sp-logo-mark" aria-label="Shirt Pocket"> 21 <path d="M7 11 H33 A4 4 0 0 1 37 15 V31 A10 10 0 0 1 27 41 H17 A10 10 0 0 1 7 31 Z" fill="#eef4fa" stroke="#2c6fa8" stroke-width="2.6" stroke-linejoin="round"></path> 22 <path d="M7 19 H37" fill="none" stroke="#2c6fa8" stroke-width="2.3"></path> 23 <path d="M27 25 L32 9" fill="none" stroke="#232b38" stroke-width="3" stroke-linecap="round"></path> 24 <circle cx="32.6" cy="8" r="2.5" fill="#2c6fa8"></circle> 25 </svg> 26 <span class="sp-brand--nav">Shirt Pocket</span> 27 </a> 28 <div class="sp-nav-links"> 29 <a href="/superduper4.php" class="sp-nav-link">SuperDuper! 4</a><a href="/classic.php" class="sp-nav-link">Classic</a><a href="/blog/" class="sp-nav-link is-active" aria-current="page">Blog</a> <a href="mailto:[email protected]" class="sp-nav-link">Support</a> 30 <a href="/downloads/SuperDuper.dmg" class="sp-btn-primary sp-nav-download">Download</a> 31 </div> 32 </div> 33 <header class="sp-blog-header"> 34 <div class="sp-eyebrow">Shirt Pocket Watch</div> 35 <h1 class="sp-blog-title">The blog</h1> 36 <p class="sp-blog-intro">Where I humiliate myself in public: release notes, backup deep-dives, and various and sundry other things that strike my fancy.</p> 37 </header> 38 <div class="sp-blog-tools" aria-label="Blog tools"> 39 <div class="sp-tool-links"> 40 <a class="sp-tool-link is-active" href="/blog/">Latest</a> 41 <a class="sp-tool-link " href="/blog/archives">Archives</a> 42 <a class="sp-tool-link " href="/blog/categories">Categories</a> 43 <a class="sp-tool-link" href="/blog/feed">RSS</a> 44 </div> 45 <form class="sp-search-form" method="get" action="/blog/search"> 46 <label for="sp-search">Search the blog</label> 47 <input class="sp-search-input" id="sp-search" type="search" name="q" value="" placeholder="Search the blog"> 48 <button class="sp-search-submit" type="submit">Search</button> 49 </form> 50 </div> 51 <div class="sp-content"> 52 <div class="sp-post-list"> 53 <article class="sp-post"> 54 <div class="sp-post-meta"> 55 <time datetime="2026-10-01">October 1, 2026</time> 56 <a class="sp-category" href="/blog/category/News">News</a> 57 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 58 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 59 </div> 60 <h1 class="sp-post-title"><a href="/blog/controlled_craziness">Controlled Craziness</a></h1> 61 <div class="sp-post-body"><p>Recently, Apple released an <a href="https://developer.apple.com/documentation/technotes/tn3137-on-mac-keychains#Backing-up-a-file-based-keychain">update to TN3137</a> that discusses backing up keychains.</p> 62 63<p>Specifically, as of macOS 26.4, <a href="https://mjtsai.com/blog/2026/09/24/locked-down-passkey-and-keychain-backups">the login keychain, and perhaps others, cannot be decrypted on other Macs, or after a restore</a>. The Tech Note indicates that backup programs should be sure to back up a folder that contains special system keys…but also says that the folder is not accessible when System Integrity Protection (SIP)<sup id="fnref:controlled_craziness:sip"><a href="#fn:controlled_craziness:sip" class="footnote-ref" role="doc-noteref">1</a></sup> is on.</p> 64 65<p>This is obviously not a good user solution, because no one is going to boot to Recovery, turn off SIP, back up, boot back to Recovery, and turn SIP back on. Thinking they <strong>would</strong> do so is kind of crazy.<sup id="fnref:controlled_craziness:crazy"><a href="#fn:controlled_craziness:crazy" class="footnote-ref" role="doc-noteref">2</a></sup></p> 66 67<h2>Breathe: it’s OK</h2> 68 69<p><strong>Fortunately</strong>, SuperDuper handles this situation. When you make a <a href="/guide.php#ch-8-bootable-backups-and-restoring">bootable copy</a>, the required keys are copied without requiring any special steps. Even though <code>Smart Update</code> cannot access those files, it preserves them on the backup so they’re available if needed.</p> 70 71<h2>What that means for you</h2> 72 73<p>It’s always a good idea to make a bootable backup, <strong>even if you have no plan to boot from it</strong>. Update it with <code>Smart Update</code>
73, update the OS when SuperDuper indicates you should, and you’ll be in good shape should you need to restore…even if you need to restore your keychains on a different Mac.<sup id="fnref:controlled_craziness:restore"><a href="#fn:controlled_craziness:restore" class="footnote-ref" role="doc-noteref">3</a></sup></p> 74 75<div class="footnotes" role="doc-endnotes"> 76<hr /> 77<ol> 78 79<li id="fn:controlled_craziness:sip" role="doc-endnote"> 80<p>System Integrity Protectionâbasically, a process that prevents any programs, other than Apple-authorized ones, from performing certain activities. You can read more about it <a href="https://developer.apple.com/documentation/security/disabling-and-enabling-system-integrity-protection">here</a>. <a href="#fnref:controlled_craziness:sip" class="footnote-backref" role="doc-backlink">↩︎</a></p> 81</li> 82 83<li id="fn:controlled_craziness:crazy" role="doc-endnote"> 84<p>This all may change in the future. The Tech Note hedges a lot in the <strong>Warning</strong> and <strong>Important</strong> sections, which suggests to me that they realize this isn’t a great situation. <a href="#fnref:controlled_craziness:crazy" class="footnote-backref" role="doc-backlink">↩︎</a></p> 85</li> 86 87<li id="fn:controlled_craziness:restore" role="doc-endnote"> 88<p>In fact, I’ve just verified that migrating from a SuperDuper bootable backup to a different Mac restores the encrypted keychains as you’d hope and expect. <a href="#fnref:controlled_craziness:restore" class="footnote-backref" role="doc-backlink">↩︎</a></p> 89</li> 90 91</ol> 92</div> 93</div> 94 <div class="sp-post-footer"> 95 <span><a href="/blog/controlled_craziness">Permalink</a></span> 96 <span>Comments closed</span> 97 </div> 98 </article> 99 <article class="sp-post"> 100 <div class="sp-post-meta"> 101 <time datetime="2026-10-01">October 1, 2026</time> 102 <a class="sp-category" href="/blog/category/News">News</a> 103 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 104 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 105 <a class="sp-category" href="/blog/category/Usability">Usability</a> 106 </div> 107 <h1 class="sp-post-title"><a href="/blog/pushing_the_boundaries">Pushing the Boundaries</a></h1> 108 <div class="sp-post-body"><h2>mtitv;ilmart<sup id="fnref:pushing_the_boundaries:value"><a href="#fn:pushing_the_boundaries:value" class="footnote-ref" role="doc-noteref">1</a></sup></h2> 109 110<p>That’s right, a new version of SuperDuper has arrived. It has some new stuff!</p> 111 112<h2>I get email</h2> 113 114<p>Every so often, a user will ask for more run logging: some sort of master list of SuperDuper copies, so they can reference it during personal contemplation time. I’ve usually suggested that they write a little shortcut to do what they want: after all, that’s what I added the feature forâto allow for extension, and inclusion of behavior that might be user-specific (and, also, to allow people to share Shortcut tips-and-tricks they might develop for SuperDuper).</p> 115 116<h2>Making an example</h2> 117 118<p>That’s a good approach, I think, but sometimes people need to start with something a bit more elaborate, and tweak that, rather than generate something from scratch.</p> 119 120<p>With that in mind, SuperDuper 4.0.9 includes a new Shortcutâ<strong>Log SuperDuper Copy to Dashboard</strong>.</p> 121 122<p><em>What does it do?</em>, you might ask? Well, pretty much what’s on the tin.</p> 123 124<p>After each copy, it adds a row of information to the sheet that includes various bits of information about the copy that just ran. At the top, you’ll find a list of the different Copy Jobs that have run (there are typically multiple runs per Job, of course, but only one entry at the top).</p> 125 126<p>You can focus on the runs of one Job by unchecking the <strong>Show</strong> column for the others, or compare them by checking other Jobs.</p> 127 128<blockquote> 129 <p>If you have so many <strong>Copy Jobs</strong> that the upper table overlaps the graphs<sup id="fnref:pushing_the_boundaries:insane"><a href="#fn:pushing_the_boundaries:insane" class="footnote-ref" role="doc-noteref">2</a></sup>, you can just drag them to relocate where they are on the sheet.</p> 130</blockquote> 131 132<h2>Extend away</h2> 133 134<p>Of course, there may be other things you want to do with the data that’s logged, and once the spreadsheet is there, you can change the various charts, add to them, and do what you’
134d like. The Shortcut will continue to update the runs.</p> 135 136<h2>I wouldn’t do that</h2> 137 138<p>I’ve had <strong>way</strong> too many users write in, thinking that their license was only good for a day. They thought that because the Registration window said “Registered for 1 day” the first day they were registered. It would, of course, say “Registered for 2 days” the next day, etc.</p> 139 140<p>Now, <strong>I</strong> didn’t think this was unclear, but when I get a bunch of emails about something like that, and people think that I’m somehow selling them a 1-day license (folks, I would never do that), it’s time for a change. So, now it says “You’ve been registered for 1 day”, etc.</p> 141 142<p>I hope that’s clearer.</p> 143 144<h2>But that’s not all!</h2> 145 146<p>Well, that’s mostly all. I’ve also improved some additional <strong>very</strong> obscure network issues, improved progress display in some edge cases, and individual job phases now remember whether you’ve expanded them or not. So, if you like to see the detailed stats for a given job, that’ll be remembered next time you run.</p> 147 148<p>To enjoy the new version, use the internal updater, or</p> 149 150<p><a href="/downloads/SuperDuper.dmg">Download SuperDuper 4.0.9 now!</a></p> 151 152<p>Once again, thanks for using and recommending SuperDuper!</p> 153 154<div class="footnotes" role="doc-endnotes"> 155<hr /> 156<ol> 157 158<li id="fn:pushing_the_boundaries:value" role="doc-endnote"> 159<p>My time is too valuable; I’ll let my assistant read this. <a href="#fnref:pushing_the_boundaries:value" class="footnote-backref" role="doc-backlink">↩︎</a></p> 160</li> 161 162<li id="fn:pushing_the_boundaries:insane" role="doc-endnote"> 163<p>In other words, you’re an insane person like me with <a href="/blog/testing">a million jobs running all the time</a>. <a href="#fnref:pushing_the_boundaries:insane" class="footnote-backref" role="doc-backlink">↩︎</a></p> 164</li> 165 166</ol> 167</div> 168</div> 169 <div class="sp-post-footer"> 170 <span><a href="/blog/pushing_the_boundaries">Permalink</a></span> 171 <span>Comments closed</span> 172 </div> 173 </article> 174 <article class="sp-post"> 175 <div class="sp-post-meta"> 176 <time datetime="2026-09-24">September 24, 2026</time> 177 <a class="sp-category" href="/blog/category/News">News</a> 178 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 179 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 180 <a class="sp-category" href="/blog/category/Usability">Usability</a> 181 </div> 182 <h1 class="sp-post-title"><a href="/blog/it_s_the_little_things">It's the Little Things</a></h1> 183 <div class="sp-post-body"><h2>Purpose & Intent</h2> 184 185<p>SuperDuper is, obviously, a serious tool that has an important task: making a reliable copy of data from one place to another. Its UI, for the most part, is <strong>all business</strong>, and tries to make the process as clear as possible.</p> 186 187<p>Those, clearly, are the big things. Table stakes, as it were.</p> 188 189<h2>Fun & Frivolity</h2> 190 191<p>Keeping that in mind, I’ve still tried to put “pleasing” things into the general design, with a focus on making things a bit more convenient, clear, informative, or easier to look at.</p> 192 193<p>Things like animations and transitions (which were in SuperDuper Classic, too); updating progress with different options, communication via both bars and pulsing; more playful ways of choosing options; dragging around jobs; the sparkles to draw your attention for the first time<sup id="fnref:it_s_the_little_things:hand"><a href="#fn:it_s_the_little_things:hand" class="footnote-ref" role="doc-noteref">1</a></sup>; things like that.</p> 194 195<p>But, yeahâwhile I don’t want it to be <strong>boring</strong>, SuperDuper isn’t ever going to be a <a href="https://daringfireball.net/2026/09/appzapper_3000">Delicious Generation</a> app.<sup id="fnref:it_s_the_little_things:tm"><a href="#fn:it_s_the_little_things:tm" class="footnote-ref" role="doc-noteref">2</a></sup> Respect to whose who <strong>can</strong> be that playful with their stuff, though!</p> 196 197<h2>Fit & Finish</h2> 198 199<p>There are serious “little” things, too, of course. And that’s where I generally focus.</p> 200 201<p>For example, SuperDuper preserves the destination drive icon and Spotlight state even across erase operations and replications.</p> 202 203<p>It’s a little thing, but I know that many users identify their drives by their icons, and so it’s nearly as important as keeping the name the same.</p> 204 205<p>Similarly, even though the Spotlight state is kept <strong>on the destination drive</strong>, I take pains to ensure that it’s preserved across the various copy permutations. It’s pretty annoying when Spotlight starts indexing a backup you told it to ignore…and can result in finding something on a backup rather than a source.</p> 206 207<p>Behavioral things, too, like mounting drives for the user, and unmounting them after (if they started that way)…there are a lot of little touches in there that just try to predict what a user would want, without needing any settings, or thought…it just works.</p> 208 209<h2>Details & Obscurity</h2> 210 211<p>SuperDuper 4.0.8, released today, deals with some of those cases, and handles some relatively obscure cases better than before.</p> 212 213<p>For example, users who have Samba setups on Linux boxes that include the <code>fruit</code> extensions may be preserving macOS permissions, and you can get into situations where a file with no permissions becomes permanently read-only (except server-side).</p> 214 215<p>Obscure, but handled.</p> 216 217<p><em>Speaking of obscure</em>, the onboarding sequence is now sensitive to the macOS version you’re running, and name-checks the background activity section based differently depending on what it is. Because it regressed from macOS 14/15’s “Allow in the background” to macOS 26/27’s “
217Background App Activity” for <strong>reasons</strong>.</p> 218 219<p>There’s a lot more, but you get the idea: continue to polish-polish-polish.</p> 220 221<p>And to get the benefit of that</p> 222 223<p><a href="/downloads/SuperDuper.dmg">Download SuperDuper! 4.0.8</a></p> 224 225<p>and install (or, better, use the built-in updater).</p> 226 227<p>As always, enjoy, and thanks for using SuperDuper.</p> 228 229<div class="footnotes" role="doc-endnotes"> 230<hr /> 231<ol> 232 233<li id="fn:it_s_the_little_things:hand" role="doc-endnote"> 234<p>Eventually, I’ll get around to my original plan for thisâhaving the “Hi!” hand come alive, swoop down, and point at the link, along with some other fun behaviors…the storyboard I did for this amuses me…but it’s a lot of work for a funny-but-useful bit of goofiness.</p> 235 236<p>Maybe if I do it they’ll let me into the Hall of Delicious Generations. <a href="#fnref:it_s_the_little_things:hand" class="footnote-backref" role="doc-backlink">↩︎</a></p> 237</li> 238 239<li id="fn:it_s_the_little_things:tm" role="doc-endnote"> 240<p>The original version of Apple’s <code>Time Machine</code> had its UI designed by <a href="https://www.mikematas.com">Mike Matas</a>, the originalâand probably the bestâDelicious Generation designer. I was lucky enough to have him design the original SuperDuper Classic icon back when he was a very young man, and it was <strong>quite</strong> clear he was both incredibly talented and going places.</p> 241 242<p><a href="https://www.lovefrom.com">And, indeed, he did (many times over)!</a></p> 243 244<p>Since he left, Time Machine has become less <strong>fun</strong>, and certainly less H.G. Wells/Victorian. <a href="#fnref:it_s_the_little_things:tm" class="footnote-backref" role="doc-backlink">↩︎</a></p> 245</li> 246 247</ol> 248</div> 249</div> 250 <div class="sp-post-footer"> 251 <span><a href="/blog/it_s_the_little_things">Permalink</a></span> 252 <span>Comments closed</span> 253 </div> 254 </article> 255 <article class="sp-post"> 256 <div class="sp-post-meta"> 257 <time datetime="2026-09-21">September 21, 2026</time> 258 <a class="sp-category" href="/blog/category/News">News</a> 259 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 260 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 261 </div> 262 <h1 class="sp-post-title"><a href="/blog/turbo_tips">â¡ï¸Turbo Tips</a></h1> 263 <div class="sp-post-body"><p>I’ve been asked a lot of times about when Smart Update becomes <strong>â¡ï¸Turbo Smart Update</strong>, and where the setting is in SuperDuper.</p> 264 265<p>The answer is: there’s no setting. When possible, SuperDuper <strong>automatically</strong> does a <strong>â¡ï¸Turbo Smart Update</strong>.</p> 266 267<p>So, why doesn’t it <strong>always</strong> â¡ï¸Turbo?</p> 268 269<h2>The rules of the game</h2> 270 271<p>Here’s the deal: â¡ï¸Turbo depends on a number of factors, and you can improve the likelihood it will happen by using a separate Copy Job for each source/destination pair. SuperDuper needs to maintain a relationship between the source, destination, copy method, etc., to ensure that â¡ï¸Turbo is reliable.</p> 272 273<p>If you change the copy method or the rules, then the relationship between the last backup and the next one has changed…and â¡ï¸Turbo is disallowed (until the next run).</p> 274 275<p>Turbo also won’t run after a <strong>One Time macOS Update</strong>, or an <strong>Erase, then copy</strong> until the second <strong>Smart Update</strong>.</p> 276 277<h2>System effects</h2> 278 279<p>SuperDuper also relies on the system’s own mechanism for tracking changes.<sup id="fnref:turbo_tips:special sauce"><a href="#fn:turbo_tips:special sauce" class="footnote-ref" role="doc-noteref">1</a></sup></p> 280 281<p>Many (many) years ago, there was a program that I <em>think</em> was called <code>Synk</code>. It installed a kernel extension that tracked all file system changes and wrote a database into user space that the copy program used to make “smarter” copies.</p> 282 283<p>I remember thinking that was incredibly dangerous at the time. You could change the volume when <code>Synk</code> wasn’t running, or on another system, and <code>Synk</code> would be none the wiser. So, while <em>clever</em>, it wasn’t a <em>reliable</em> method of doing this.</p> 284 285<p>Years later, Apple added <code>fsevents</code>, a system-supported way of doing the same kind of thing. I evaluated it when it was introduced, and it was just too flaky to rely on…it wasn’t worth the risk.</p> 286 287<p>Since then, Apple has made changes to <code>fsevents</code>, making it far more reliable as a source of “truth” about volume status.</p> 288 289<p>Now, it’s no panacea. <code>fsevents</code> doesn’
289t tell you a ton, and it consolidates its change sets pretty regularly, so it’s not like you can just say “here’s what happened” and replay a bunch of events on the copy and get a good result.</p> 290 291<p>But, as a way of “thinning” the number of files and folders you have to visit, when used intelligently, it works well.</p> 292 293<p>Unless/Until it doesn’t.</p> 294 295<h2>Sorry, Charlie</h2> 296 297<p>Unfortunately, sometimes <code>fsevents</code> can’t keep up with the number of changes being made to a volume, or needs to flush its internal change database. So even though SuperDuper knows what to do, <code>fsevents</code> can veto our attempt annd say that it has, basically, lost the historyâand a full scan is needed.</p> 298 299<p>This can also happen when a drive disconnects unexpectedly, or is unplugged without fully ejecting it.</p> 300 301<p>And, of course, it’s erased when you erase.</p> 302 303<h2>Faster, Pussycat! Kill! Kill!</h2> 304 305<p>So there you go: <strong>â¡ï¸Turbo Smart Update</strong> works on the second and subsequent runs of the same job, when the job itself hasn’t changed in a way that invalidates <strong>â¡ï¸Turbo</strong>…as long as the system doesn’t invalidate its change database for the volumes involved.</p> 306 307<p>In the event a full scan is necessary, SuperDuper uses regular <strong>Smart Update</strong>. And since that’s more than twice as fast as before, it’s less painful than it could be.</p> 308 309<p><img style="display:block; margin-left:auto; margin-right:auto;" src="https://www.shirt-pocket.com/blog/assets/media/2026/09/The_More_You_Know_about_Turbo.gif" alt="The More You Know about â¡ï¸Turbo Smart Update." title="The More You Know about Turbo.gif" border="0" width="360" height="218" /></p> 310 311<div class="footnotes" role="doc-endnotes"> 312<hr /> 313<ol> 314 315<li id="fn:turbo_tips:special sauce" role="doc-endnote"> 316<p>Of course, there’s a ton of SuperDuper Special Sauceâ¢ï¸ involved here, too. <a href="#fnref:turbo_tips:special sauce" class="footnote-backref" role="doc-backlink">↩︎</a></p> 317</li> 318 319</ol> 320</div> 321</div> 322 <div class="sp-post-footer"> 323 <span><a href="/blog/turbo_tips">Permalink</a></span> 324 <span>Comments closed</span> 325 </div> 326 </article> 327 <article class="sp-post"> 328 <div class="sp-post-meta"> 329 <time datetime="2026-09-16">September 16, 2026</time> 330 <a class="sp-category" href="/blog/category/News">News</a> 331 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 332 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 333 <a class="sp-category" href="/blog/category/Usability">Usability</a> 334 </div> 335 <h1 class="sp-post-title"><a href="/blog/do_the_right_thing">Do the Right Thing</a></h1> 336 <div class="sp-post-body"><p>I try to always do the “right thing”.</p> 337 338<p>What does that mean? It means “only use documented calls”. It means “work around problems using normal processes, but not things that aren’t documented”.</p> 339 340<p>It means that even when I know why something isn’t working, if there’s no documented fix…well, I don’t do that…unless I absolutely have to.</p> 341 342<h2>The past is prologue</h2> 343 344<p>I’ve been in this situation before. When Catalina was released, and the whole boot process was different, I spent all summer figuring out how to make a bootable copy: volume groups, roles, firmlinks, and so much time going through verbose boot logs (literally taking movies of them, since they went by so <strong>fast</strong>, and single stepping through) until I figured out the issue.</p> 345 346<p>It was rough (but also fun).</p> 347 348<p>And, obviously, none of that was documented. But I did it anyway…to benefit the users of SuperDuper.</p> 349 350<h2>A new dilemma</h2> 351 352<p>I’ve known for a while why drives aren’t showing up as bootable under Golden Gate. And it’s been reported as a bug, as mentioned in my previous blog posts. But I didn’
352t want to release the workaround I had, because it relies on something undocumented.</p> 353 354<p>Specifically, one…single…bit.</p> 355 356<h2>Cat leaves bag</h2> 357 358<p>I had hoped that the <code>Terminal</code> command I provided in a previous post would be sufficient until an official fix came out, but it’s just too difficult for “regular” people to execute…and the last thing I want to do is put people in a state of panic when they’re trying to recover from a failure.</p> 359 360<p>But the tipping point was that, yesterday, a beta of 27.2 (!) was released, without a fix. Which means I don’t know when, or if, a fix is going to be implemented.</p> 361 362<p>The thing is, the copy is actually <strong>fine</strong> (as proven by the original workaround & “proof of life” screenshot). The real issue is that Golden Gate’s startup drive code is filtering its selections by looking for something that neither <code>asr</code> nor <code>bless</code> is setting. In fact, they’ve <strong>never</strong> set this value, which is why, under Golden Gate, your <strong>previously</strong> bootable backups <em>look</em> like they’re no longer bootable.</p> 363 364<p>With those factors in mind, I’ve reversed course and have decided to go ahead and work around the issue as safely as I can.</p> 365 366<p>Note that this fix will automatically disable itself when the <strong>real</strong> fix is (hopefully) released. In all the internal testing that I’ve done during the Golden Gate Beta, it’s worked fine and seems perfectly safe.</p> 367 368<h2>What you need to do (nothing)</h2> 369 370<p>The fix will be applied automatically when you make your next backup, even if it’s a Smart Update, under all macOS versions supported by SuperDuper 4. Other than that, there’s nothing special you need to do.</p> 371 372<p>With all that said,</p> 373 374<p><a href="/downloads/SuperDuper.dmg">Download SuperDuper! 4.0.7</a></p> 375 376<p>(or, better, just use the internal updater).</p> 377 378<p>Thanks, as always, for using SuperDuper, and for your patience.</p> 379</div> 380 <div class="sp-post-footer"> 381 <span><a href="/blog/do_the_right_thing">Permalink</a></span> 382 <span>Comments closed</span> 383 </div> 384 </article> 385 <article class="sp-post"> 386 <div class="sp-post-meta"> 387 <time datetime="2026-09-14">September 14, 2026</time> 388 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 389 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 390 </div> 391 <h1 class="sp-post-title"><a href="/blog/proof_of_boot_life">Proof of (Boot) Life</a></h1> 392 <div class="sp-post-body"><p>As I mentioned in the previous post, there’s a bug in Golden Gate that is not showing proper external copies as bootable, even though they’re made correctly, with Apple’s own replicator.</p> 393 394<p>The workaround, if you must, is listed there (you should also be able to install Golden Gate over the backup from Recovery). For those who doubt (you know who you are), this is a screen shot of my Mac Studio<sup id="fnref:proof_of_boot_life:SN"><a href="#fn:proof_of_boot_life:SN" class="footnote-ref" role="doc-noteref">1</a></sup> booting off a SuperDuper copy made to a JBOD PRO-BLADE Station (I’ve also tested a MacBook Neo and a MacBook Pro).</p> 395 396<p><img style="display:block; margin-left:auto; margin-right:auto;" src="https://www.shirt-pocket.com/blog/assets/media/2026/09/Golden_Gate_Boot.png" alt="Golden Gate Boot." title="Golden Gate Boot.png" border="0" width="356" height="600" /></p> 397 398<div class="footnotes" role="doc-endnotes"> 399<hr /> 400<ol> 401 402<li id="fn:proof_of_boot_life:SN" role="doc-endnote"> 403<p><strong>NOTACHANCE</strong> is obviously not my real serial number, but I thought this would be funnier than just blacking it out. <a href="#fnref:proof_of_boot_life:SN" class="footnote-backref" role="doc-backlink">↩︎</a></p> 404</li> 405 406</ol> 407</div> 408</div> 409 <div class="sp-post-footer"> 410 <span><a href="/blog/proof_of_boot_life">Permalink</a></span>
411 <span>Comments closed</span> 412 </div> 413 </article> 414 <article class="sp-post"> 415 <div class="sp-post-meta"> 416 <time datetime="2026-09-14">September 14, 2026</time> 417 <a class="sp-category" href="/blog/category/News">News</a> 418 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 419 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 420 </div> 421 <h1 class="sp-post-title"><a href="/blog/laboring_day">Laboring Day</a></h1> 422 <div class="sp-post-body"><h2>Busy week</h2> 423 424<p>Post-Labor Day (on which I still labored), it’s been a busy week here at Shirt Pocket HQ.</p> 425 426<p>I’ve been adding a few little features and fixes to SuperDuper, improving behaviors with regard to images, Cloud Storage, and wrapping up Golden Gate support for its release, which will likely be a few hours after this posts.</p> 427 428<p>Details are in the <a href="/superduper4.php#notes-1015">release notes</a>.</p> 429 430<h2>SuperDuper is ready, but…</h2> 431 432<p>Golden Gate, in my view, looks to be one of the more reliable releases we’ve had in <strong>years</strong>, even in its 27.0 release. I wouldn’t hesitate to encourage people to install it, without waiting for the (inevitable) 27.1 release. I even recommended it to the curious during the very stable and reliable Beta period. Shockingly painless.</p> 433 434<p>That said, there’s always a <strong>but</strong> in these releases, you know?</p> 435 436<p>The <a href="https://youtu.be/X53ZSxkQ3Ho">big but</a>(tâsorry) in Golden Gate 27.0 is a SuperDuper issue (that is <a href="/blog/its_a_trip_to_the_moon_not_a_marathon/">actually an Apple issue</a>): backups, even though a bootable backup is properly configured to boot, they aren’t showing up as choices in <em>either</em> the startup disk preference pane <strong>or</strong> the startup picker. (FB24210103, reported quite a while ago, Apple friends.)</p> 437 438<p>Fortunately, unlike when <a href="/blog/youre_a_mean_one">this happened before</a>, there’s no error during copy. But, even though the end result is bootable<sup id="fnref:laboring_day:boot"><a href="#fn:laboring_day:boot" class="footnote-ref" role="doc-noteref">1</a></sup>, it just doesn’t appear.</p> 439 440<p><strong>Remember</strong>: a drive doesn’t have to boot to be fully restored. But there are many scenarios where boot is essential, and I’m hoping Apple will fix this soon.</p> 441 442<h2>Ecosystem: engage!</h2> 443 444<p>I was delighted to see that there’s a third-party app called <a href="https://openbackup.app/">OpenBackup</a> that offers mobile notification when backups run for both <a href="/superduper4.php">SuperDuper 4</a> and <a href="/classic.php">SuperDuper Classic</a>. It works on both iOS and Android.</p> 445 446<p>I always hope, when I implement things like <code>Shortcuts</code> support, that other developers will make use of them to do cool things<sup id="fnref:laboring_day:legup"><a href="#fn:laboring_day:legup" class="footnote-ref" role="doc-noteref">2</a></sup>…it’s nice to see it happening.</p> 447 448<h2>In the meantime</h2> 449 450<p>I continue to be surprised and delighted by how well the rollout of SuperDuper 4 is going. Thanks to everyone who has registered, to those who have recommended it to their friends, and to the folks that have reviewed it.</p> 451 452<p>But now, it’s time to update SuperDuper using the built-in updater, or</p> 453 454<p><a href="/downloads/SuperDuper.dmg">Download SuperDuper! 4.0.6 Now</a></p> 455 456<p>As always, thanks for using SuperDuper!âyour support is appreciated.</p> 457 458<div class="footnotes" role="doc-endnotes"> 459<hr /> 460<ol> 461 462<li id="fn:laboring_day:boot" role="doc-endnote"> 463<p>You can prove this to yourself if you really <strong>want</strong> to by booting into Recovery, reducing security with the Startup Security utility, and then using <code>bless --mount /Volumes/Backup-Volume --setBoot</code> in Recovery’s <code>Terminal</code>. But <strong>don’t</strong> unless you <strong>really</strong> have to. <a href="#fnref:laboring_day:boot" class="footnote-backref" role="doc-backlink">↩︎</a></p> 464</li> 465 466<li id="fn:laboring_day:legup" role="doc-endnote"> 467<p>It’s always nice to leave some space for fellow developers (not to mention users) to build on what you’ve done: we did this with Classic, with support for <code>Growl</code> and extensive AppleScript support. <a href="#fnref:laboring_day:legup" class="footnote-backref" role="doc-backlink">↩︎</a></p> 468</li> 469 470</ol> 471</div> 472</div> 473 <div class="sp-post-footer">
474 <span><a href="/blog/laboring_day">Permalink</a></span> 475 <span>Comments closed</span> 476 </div> 477 </article> 478 <article class="sp-post"> 479 <div class="sp-post-meta"> 480 <time datetime="2026-09-08">September 8, 2026</time> 481 <a class="sp-category" href="/blog/category/News">News</a> 482 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 483 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 484 </div> 485 <h1 class="sp-post-title"><a href="/blog/daring_to_recommend">Daring to Recommend</a></h1> 486 <div class="sp-post-body"><p>John Gruber (of <a href="https://www.daringfireball.net"><img src="https://daringfireball.net/favicon.ico" width="16" height="16" alt="Daring Fireball" style="vertical-align: -2px;"> Daring Fireball</a> fame) has been using SuperDuper <a href="https://daringfireball.net/2004/12/software_update">since at least 2004</a>, not long after its initial release. He’s <a href="https://daringfireball.net/2010/03/ode_to_diskwarrior_superduper_dropbox">written</a> <a href="https://daringfireball.net/2025/02/bootable_mac_startup_drive_backups_and_another_ode_to_superduper">kindly about it</a> over the years, and has just issued <a href="https://daringfireball.net/2026/09/superduper_4">his verdict on SuperDuper 4</a>:</p> 487 488<blockquote> 489 <p>SuperDuper feels like impossibly good software. Read <a href="/blog/supererduperer">his post announcing version 4</a> to start, then catch up on the rest of the blog to get a feeling for how much work heâs put into SuperDuper 4. Just extraordinary.<br /> 490 …<br /> 491 I recommend SuperDuper 4 wholeheartedly.</p> 492</blockquote> 493 494<p><em>Thanks, John!</em></p> 495</div> 496 <div class="sp-post-footer"> 497 <span><a href="/blog/daring_to_recommend">Permalink</a></span> 498 <span>Comments closed</span> 499 </div> 500 </article> 501 <article class="sp-post"> 502 <div class="sp-post-meta"> 503 <time datetime="2026-09-08">September 8, 2026</time> 504 <a class="sp-category" href="/blog/category/News">News</a> 505 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 506 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 507 <a class="sp-category" href="/blog/category/Usability">Usability</a> 508 </div> 509 <h1 class="sp-post-title"><a href="/blog/testing">Testing</a></h1> 510 <div class="sp-post-body"><h2>In a Hurry?</h2> 511 512<p>You probably don’t need to read this. Unless you want to.</p> 513 514<h2>Process, Process, Process</h2> 515 516<p>So, how do you solve the problem of testing a product like SuperDuper?</p> 517 518<iframe width="560" height="315" src="https://www.youtube.com/embed/s-VRyQprlu8?si=GBONziGHxaMHPupx" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> 519 520<p>As you might expect, it’s pretty difficult. Of course, you can pin individual cases of UI and copy behavior (there are over 2,000 individual tests against the SuperDuper code base, which is about 250K lines of Swift, Objective-C and C): those are run every time I make a change to the code base…to protect against regression of things that are <strong>known</strong>.</p> 521 522<h2>Theory vs Practice</h2> 523 524<p>But this type of testing only gets you so far. I can model various situations that I’m trying to cover, but models just simulate reality (even if the cases are real).</p> 525 526<p>Real backups are more complicated, and quirkier.</p> 527 528<p>They’re often to different drive types. Those drives may be formatted in different ways, have their own layouts, failure modes, fragmentation levels, and connections.</p> 529 530<p>So, not only do I run a few systems of different eras as test harnesses with various drives attached (simultaneously running Time Machine, too), my main development system (currently a first generation Mac studio) has a <strong>huge</strong> number of different drives attached.</p> 531 532<p>These include (but are not limited toâI also have thumb-drives set up for specific tests, and assorted other SSDs and HDDs):</p> 533 534<ul> 535<li>2x OWC Express 1M2 80G, one with an OWC SSD, one with a SanDisk SSD</li> 536<li>
5361x LaCie D2 Thunderbolt 2 drive, connected via an Apple TB3/4->TB2 adapter, chained to</li> 537<li>1x LaCie 2Big Thunderbolt 2 drive (RAID)</li> 538<li>1x LaCie 2Big Desk/Dock (RAID)</li> 539<li>1x SanDisk Pro USB-C SSD</li> 540<li>1x SanDisk Professional TB4 SSD</li> 541<li>1x SanDisk USB Transport with its own PRO-BLADE</li> 542<li>1x SanDisk PRO-BLADE Station with 4 PRO-BLADE SSDs (JBOD)</li> 543<li>1x OWC 4M2, configured as JBOD, with 2xM.2 SSDs</li> 544<li>1x Synology 2415+ configured as iSCSI via ATTO’s initiator</li> 545<li>4x SMB mounts from the Synology</li> 546</ul> 547 548<blockquote> 549 <p>Note that some of these drives are connected to an Anker TB5 dock, to make sure that’s covered, too; some are connected to an Apple Studio Display, to get a hub in there; many are daisy chained, so I deal with that, too.</p> 550</blockquote> 551 552<p>Yeah, that’s a lot of drives (and a significant investment), and doesn’t count the separate Mac systems with their own external storage that are running tests all the time.</p> 553 554<p>Those drives don’t do a lot on their own, of course: SuperDuper is configured to run copies against them, of various types, all day long (and all night).</p> 555 556<p>If there are any failures, I’m notified immediately and can analyze the logs to determine the cause, how it was handled (since failures can happen to users), and whether it was my issue or a problem with hardware.</p> 557 558<p>In addition, while all of the copies are checked separately for accuracy and under-copying, a number of tests also check for idempotency, to ensure there’s no thrashing or incorrect/over copying, and then there are a series of timed tests that make sure there hasn’t been a performance regression.</p> 559 560<p>And on top of that, there are the aforementioned <em>2,000 automated tests</em> in the full SuperDuper 4 test suite, with more manual tests as well (which I need to figure out how to automate one of these days).</p> 561 562<h2>Even So…</h2> 563 564<p>But even with all that, I can’t truly replicate every situation that can occur in the field. And even with all that <strong>I</strong> can screw up and miss things.</p> 565 566<p>That’s where <strong>other</strong> testers come in. As I’ve mentioned previously, there were a large number of external testers during SuperDuper 4’s development, rolled in over time to ensure a series of “fresh testers” (and test cases) were always encountering the code.</p> 567 568<p>When outside users run into a problem, I have to figure out what happened beyond just “Hey, Dave, last night’s copy failed”. So SuperDuper does extensive logging (if you want to be driven mad, feel free to look at the ocean of logging with <code>log show</code> in Terminal): when a user submits an issue, it includes both SuperDuper’s visible log, and a filtered-for-relevance couple of seconds before and after the failure from the system log, so that I have enough information to analyze the error.</p> 569 570<p>When appropriate, verified problems turn into another test case, to make sure they’re both fixed and won’t break again. And then a test build is sent to the user to ensure the situation is covered in its original setting.</p> 571 572<p>Bugs in the field are pretty rare things (and are often the result of configuration differences that I haven’t created in-house). But given a report, it’s nice to be able to fix them…and prevent them from happening again.</p> 573 574<h2>In Sum</h2> 575 576<p>In the end, there’s no magic, and there are no shortcuts: copy testing is done by making (and comparing) tons and tons of copies, small and large, under both “random” and “known” situations; UI testing is done by pinning behavior and ensuring things react as expected.</p> 577 578<p>Combine that with (hopefully) proper design, extensive experience, and careful implementation, and you end up with SuperDuper 4 which, despite a number of small updates post-release, is (thankfully) proving to be very reliable in the field…the goal of any design, development, and testing process.</p> 579</div> 580 <div class="sp-post-footer">
581 <span><a href="/blog/testing">Permalink</a></span> 582 <span>Comments closed</span> 583 </div> 584 </article> 585 <article class="sp-post"> 586 <div class="sp-post-meta"> 587 <time datetime="2026-09-03">September 3, 2026</time> 588 <a class="sp-category" href="/blog/category/Shirt%20Pocket">Shirt Pocket</a> 589 <a class="sp-category" href="/blog/category/SuperDuper%21">SuperDuper!</a> 590 <a class="sp-category" href="/blog/category/Usability">Usability</a> 591 </div> 592 <h1 class="sp-post-title"><a href="/blog/estimates">Estimates</a></h1> 593 <div class="sp-post-body"><h2>Hard Problems are Hard</h2> 594 595<p>You need only look at Apple’s installer, sitting at “one minute left” for an hour, to understand that time estimates of I/O-based operations are <strong>very hard</strong>.</p> 596 597<p>They seem like they’d be easy, though, don’t they?<sup id="fnref:estimates:easy"><a href="#fn:estimates:easy" class="footnote-ref" role="doc-noteref">1</a></sup> You just take the size, figure out how fast things are going, and do some math, and bingo-bango-bongo, there you go! Perfect estimate!</p> 598 599<p>Similarly, you take something like the <a href="https://apps.apple.com/us/app/blackmagic-disk-speed-test/id425264550">Blackmagic Disk Speed Test</a> and look at its read/write speed and think “geez, there’s the speed, what’s the problem”?</p> 600 601<p>I mean, sure: if you were writing a single file (or some big files), to a blank destination, on a consistent connection. Bytes stream at a constant rate, and it really is just a matter of a few quick observations and a little math.</p> 602 603<h2>Real World Cases</h2> 604 605<p>But, no. It’s not that simple. I tried the best I could to get things as right as possible, and the estimates are <strong>still</strong>, sometimes, wrong.</p> 606 607<p>Sometimes <strong>very</strong> wrong.</p> 608 609<p>Let me walk you through the general (albeit highly simplified) approach:</p> 610 611<ul> 612<li>SuperDuper walks the drive and calculates about how much data has to be copied (while, at the same time, it’s copying)</li> 613<li>Once it knows, it looks as the rate copying is going</li> 614<li>It then shows you a time</li> 615</ul> 616 617<p>Sounds familiar, right? Well, it goes further than that:</p> 618 619<ul> 620<li>It’s actually showing a moving average that’s taking speed variances into account</li> 621<li>It’s determining the approximate ratio of “up to date” vs “need to copy” files</li> 622<li>It’s figuring out how long it’s taking to copy small vs big files</li> 623<li>It’s taking <strong>previous runs</strong> against this content into account</li> 624<li>…and so much more…</li> 625</ul> 626 627<p>Even with all that, sometimes it’ll be wrong.</p> 628 629<p>I just don’t know, until I get there, whether something is going to <strong>need</strong> to be copied. If it doesn’t, and it’s large, the estimate will be too long. If it does, and the OS is slow to copy that particular file, or that size of file, it’ll be too short.</p> 630 631<p>You get the idea. Hopefully.</p> 632 633<h2>“Your Estimates Suck, and So Do You”</h2> 634 635<p>For years, I resisted putting in anything like this. It’s just too hard to give an accurate number. But as I shaped the algorithms I’m using in SD4, I figured I could get <strong>close</strong>, <strong>most</strong> of the time, in <strong>most</strong> situations, and it would be worthwhile.</p> 636 637<p>And I think it is. Usually. Sometimes it’s wrong…but it gets better the more you copy that particular content.</p> 638 639<p>It’ll never be perfect, though (although I get <strong>very</strong> close for replication, which was very tricky, given Apple’s replicator gives virtually <strong>no</strong> information about what it’s doing, and certainly no speed or even size info), and I try to indicate that with lots of hedging and “weasel words” like <em>approximately</em> and <em>about</em> and <em>estimate</em> to tell you that, well, an estimate is an estimate. It’s an inexact science.</p> 640 641<p>So, if the estimate I’m presenting annoys you, you may want to consider taking the Car Talk “engine check light” approach: put a piece of black electrical tape over it.</p> 642 643<p>Or just close the window. The copy will continue in the background and finish when it finishes.</p> 644 645<p>Problem solved!</p> 646 647<div class="footnotes" role="doc-endnotes"> 648<hr /> 649<ol> 650 651<li id="fn:estimates:easy" role="doc-endnote"> 652<p>Or so everyone tells me when they complain about them. <a href="#fnref:estimates:easy" class="footnote-backref" role="doc-backlink">↩︎</a></p> 653</li> 654 655</ol> 656</div> 657</div> 658 <div class="sp-post-footer">
659 <span><a href="/blog/estimates">Permalink</a></span> 660 <span>Comments closed</span> 661 </div> 662 </article> 663 </div> 664 <nav class="sp-pagination" aria-label="Post pages"> 665 <span class="sp-page-count">Page 1 of 33</span> 666 <a href="/blog/page/2">Older â</a> </nav> 667 </div> 668 <!-- FOOTER --> 669 <div class="sp-footer"> 670 <div class="sp-footer-intro"> 671 <div class="sp-footer-brand"> 672 <svg viewBox="0 0 44 48" width="24" height="26" class="sp-logo-mark" aria-hidden="true"> 673 <path d="M7 11 H33 A4 4 0 0 1 37 15 V31 A10 10 0 0 1 27 41 H17 A10 10 0 0 1 7 31 Z" fill="#eef4fa" stroke="#2c6fa8" stroke-width="2.6" stroke-linejoin="round"></path> 674 <path d="M7 19 H37" fill="none" stroke="#2c6fa8" stroke-width="2.3"></path> 675 <path d="M27 25 L32 9" fill="none" stroke="#232b38" stroke-width="3" stroke-linecap="round"></path> 676 <circle cx="32.6" cy="8" r="2.5" fill="#2c6fa8"></circle> 677 </svg> 678 <span class="sp-brand--footer">Shirt Pocket</span> 679 </div> 680 <div class="sp-footer-tagline">Software for an audience of one. You.</div> 681 </div> 682 <div class="sp-footer-links"> 683 <div class="sp-footer-column"><strong>Products</strong><a href="/superduper4.php">SuperDuper! 4</a><a href="/classic.php">Classic</a><a href="/hall-of-fame.php">Hall of Fame</a></div> 684 <div class="sp-footer-column"><strong>Learn</strong><a href="/faq-superduper4.php">FAQ</a><a href="/guide.php">User's Guide</a><a href="/blog/">Blog</a></div> 685 <div class="sp-footer-column"><strong>Company</strong><a href="/about.php">About</a><a href="mailto:[email protected]">Support</a></div> 686 </div> 687 </div> 688 <div class="sp-footer-copyright">© 2002â2026 Shirt Pocket. All rights reserved.</div> 689 690</div><!-- /.sp-page -->
691<script src="/js/site.js?v=1785608967"></script>
691 692</body> 693</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.