<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>testing on Samirtech</title>
    <link>https://samirtech.org/tags/testing/</link>
    <description>Recent content in testing on Samirtech</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 14 Sep 2026 09:00:00 +0100</lastBuildDate><atom:link href="https://samirtech.org/tags/testing/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Testing a Restore Before Disaster Strikes</title>
      <link>https://samirtech.org/posts/testing-a-restore-before-disaster-strikes/</link>
      <pubDate>Mon, 14 Sep 2026 09:00:00 +0100</pubDate>
      
      <guid>https://samirtech.org/posts/testing-a-restore-before-disaster-strikes/</guid>
      <description>Before the TrueNAS reset, I had rarely tested a complete restore. The incident became the test, and it was much more complicated than I expected.
What I test now I do not only check that a scheduled job says “completed”. I test whether I can:
locate the backup; authenticate to it; unlock encrypted data; restore a sample and a larger set; rebuild the database; open original photographs and videos; identify missing or duplicate files; explain the procedure to myself later.</description>
      <content>&lt;p&gt;Before the TrueNAS reset, I had rarely tested a complete restore. The incident became the test, and it was much more complicated than I expected.&lt;/p&gt;
&lt;h2 id=&#34;what-i-test-now&#34;&gt;What I test now&lt;/h2&gt;
&lt;p&gt;I do not only check that a scheduled job says “completed”. I test whether I can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;locate the backup;&lt;/li&gt;
&lt;li&gt;authenticate to it;&lt;/li&gt;
&lt;li&gt;unlock encrypted data;&lt;/li&gt;
&lt;li&gt;restore a sample and a larger set;&lt;/li&gt;
&lt;li&gt;rebuild the database;&lt;/li&gt;
&lt;li&gt;open original photographs and videos;&lt;/li&gt;
&lt;li&gt;identify missing or duplicate files;&lt;/li&gt;
&lt;li&gt;explain the procedure to myself later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;start-with-a-separate-restore-area&#34;&gt;Start with a separate restore area&lt;/h2&gt;
&lt;p&gt;Recovered files first went to a separate TrueNAS location. I did not write directly into the live Immich library while I was still working out which backup root and user folder were correct.&lt;/p&gt;
&lt;p&gt;That separation made retries safer and allowed me to compare the source and destination without confusing recovered data with live uploads.&lt;/p&gt;
&lt;h2 id=&#34;check-more-than-recent-files&#34;&gt;Check more than recent files&lt;/h2&gt;
&lt;p&gt;A restore can look successful because recent photos are present while older years are missing. I deliberately check different years, photos and videos, both users, and files from before the point where the original migration began.&lt;/p&gt;
&lt;p&gt;In my case, some items from before 2024 did not appear in the first migration attempt. Reviewing the timeline exposed that gap.&lt;/p&gt;
&lt;h2 id=&#34;hash-checks-and-application-checks&#34;&gt;Hash checks and application checks&lt;/h2&gt;
&lt;p&gt;I use SHA-256 for selected file comparisons. A matching hash shows that the copied file is byte-for-byte identical to the file tested at the source.&lt;/p&gt;
&lt;p&gt;That is only one part of the check. I also open the files, inspect the database, check albums and confirm that the active Immich app displays the results on the phone.&lt;/p&gt;
&lt;h2 id=&#34;record-the-result&#34;&gt;Record the result&lt;/h2&gt;
&lt;p&gt;A restore test should produce notes: what was restored, from where, with which key, how long it took, what failed and how it was fixed. Those notes become the recovery guide for the next incident.&lt;/p&gt;
&lt;p&gt;The best time to discover a missing key or broken restore command is during a planned test, not when the original server has already been wiped.&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
