Restore from backup failing

Looks like the previous SD died in my pi, luckily I have automatic backups to a NAS. I’ve switched SDs and reinstalled HA.

Several attempts of restoring during the initial setup have failed.
I have since gone through setup and added my NAS as storage to pull the backup there. These have also failed. I have attempted full and partial resorations. The supervisor logs are not obvious, but there error I get is:

2026-04-18 10:21:42.340 INFO (MainThread) [supervisor.backups.manager] Restore 9b0fb756 starting stage await_home_assistant_restart
2026-04-18 10:21:42.358 ERROR (MainThread) [asyncio] Task exception was never retrieved
future: <Task finished name='Task-4342' coro=<BackupManager.do_restore_partial() done, defined at /usr/src/supervisor/supervisor/jobs/decorator.py:245> exception=BackupError('Restore 9b0fb756 error, see supervisor logs')>
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/backups/manager.py", line 724, in _do_restore
    async with backup.open(location):
               ~~~~~~~~~~~^^^^^^^^^^
  File "/usr/local/lib/python3.14/contextlib.py", line 214, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/backups/backup.py", line 571, in open
    self._tmp = await self.sys_run_in_executor(_extract_backup)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 86, in run
    result = ctx.run(self.task)
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 73, in run
    return fn(*args, **kwargs)
  File "/usr/src/supervisor/supervisor/backups/backup.py", line 547, in _extract_backup
    tmp = TemporaryDirectory(dir=str(backup_tarfile.parent))
  File "/usr/local/lib/python3.14/tempfile.py", line 907, in __init__
    self.name = mkdtemp(suffix, prefix, dir)
                ~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tempfile.py", line 385, in mkdtemp
    _os.mkdir(file, 0o700)
    ~~~~~~~~~^^^^^^^^^^^^^
OSError: [Errno 30] Read-only file system: '/data/mounts/Archive/tmp6sd7dct1'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 307, in wrapper
    raise err
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 299, in wrapper
    return await method(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/backups/manager.py", line 950, in do_restore_partial
    success = await self._do_restore(
              ^^^^^^^^^^^^^^^^^^^^^^^
    ...<6 lines>...
    )
    ^
  File "/usr/src/supervisor/supervisor/backups/manager.py", line 766, in _do_restore
    raise BackupError(
        f"Restore {backup.slug} error, see supervisor logs"
    ) from err
supervisor.exceptions.BackupError: Restore 9b0fb756 error, see supervisor logs

In an effort to reduce variables, I installed Samba Share, moved the backup file to the local drive and then removed the NAS as backup.

I have begun restoration from the local backup file and have made more progress than previous attempts.

The new and old/previous IPs are still not accessible after 30min on a pi 4 with a 1.45GB backup file. Flying a little blind on process, but I’m going to let it rock

30 minutes not long enough. Wait longer, as long as it takes…
I often suggest start it before you fo to sleep for the night and check it in the morning.
SD cards are S L O W…

I let it do it things over night, and was able to reconnect to the ‘new’ server IP. But with no indication of progress so I was flying blind. But it did not appear to be doing anything. I rebooted the pi via HA GUI, and once back up started the backup restore again. After two hours, the restore appears to have errors based on the logs. I’m having trouble determining a cause

2026-04-19 09:25:21.131 INFO (MainThread) [supervisor.docker.manager] Cleaning homeassistant application
2026-04-19 10:27:45.786 ERROR (MainThread) [supervisor.jobs] Unhandled exception: Unexpected failure
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 299, in wrapper
    return await method(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/homeassistant/module.py", line 546, in restore
    data = await self.sys_run_in_executor(_restore_home_assistant)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 86, in run
    result = ctx.run(self.task)
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 73, in run
    return fn(*args, **kwargs)
  File "/usr/src/supervisor/supervisor/homeassistant/module.py", line 493, in _restore_home_assistant
    backup.extractall(
    ~~~~~~~~~~~~~~~~~^
        path=temp_path,
        ^^^^^^^^^^^^^^^
        filter="tar",
        ^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/tarfile.py", line 2418, in extractall
    self._extract_one(tarinfo, path, set_attrs=not tarinfo.isdir(),
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      numeric_owner=numeric_owner,
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      filter_function=filter_function)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 2521, in _extract_one
    self._extract_member(tarinfo, os.path.join(path, tarinfo.name),
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                         set_attrs=set_attrs,
                         ^^^^^^^^^^^^^^^^^^^^
                         numeric_owner=numeric_owner,
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                         filter_function=filter_function,
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                         extraction_root=path)
                         ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 2610, in _extract_member
    self.makefile(tarinfo, targetpath)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 2667, in makefile
    copyfileobj(source, target, tarinfo.size, ReadError, bufsize)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 249, in copyfileobj
    buf = src.read(bufsize)
  File "/usr/local/lib/python3.14/tarfile.py", line 536, in read
    buf = self._read(size)
  File "/usr/local/lib/python3.14/tarfile.py", line 554, in _read
    buf = self.fileobj.read(self.bufsize)
  File "/usr/local/lib/python3.14/site-packages/securetar/__init__.py", line 306, in read
    self._fill_buffer(size)
    ~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.14/site-packages/securetar/__init__.py", line 622, in _fill_buffer
    plaintext, tag = nss.crypto_secretstream_xchacha20poly1305_pull(
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        self._state, encrypted
        ^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/site-packages/nacl/bindings/crypto_secretstream.py", line 329, in crypto_secretstream_xchacha20poly1305_pull
    ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError)
    ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/nacl/exceptions.py", line 88, in ensure
    raise raising(*args)
nacl.exceptions.RuntimeError: Unexpected failure
2026-04-19 10:27:46.053 ERROR (MainThread) [supervisor.backups.manager] Restore 9b0fb756 error
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 299, in wrapper
    return await method(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/homeassistant/module.py", line 546, in restore
    data = await self.sys_run_in_executor(_restore_home_assistant)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 86, in run
    result = ctx.run(self.task)
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 73, in run
    return fn(*args, **kwargs)
  File "/usr/src/supervisor/supervisor/homeassistant/module.py", line 493, in _restore_home_assistant
    backup.extractall(
    ~~~~~~~~~~~~~~~~~^
        path=temp_path,
        ^^^^^^^^^^^^^^^
        filter="tar",
        ^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/tarfile.py", line 2418, in extractall
    self._extract_one(tarinfo, path, set_attrs=not tarinfo.isdir(),
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      numeric_owner=numeric_owner,
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      filter_function=filter_function)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 2521, in _extract_one
    self._extract_member(tarinfo, os.path.join(path, tarinfo.name),
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                         set_attrs=set_attrs,
                         ^^^^^^^^^^^^^^^^^^^^
                         numeric_owner=numeric_owner,
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                         filter_function=filter_function,
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                         extraction_root=path)
                         ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 2610, in _extract_member
    self.makefile(tarinfo, targetpath)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 2667, in makefile
    copyfileobj(source, target, tarinfo.size, ReadError, bufsize)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 249, in copyfileobj
    buf = src.read(bufsize)
  File "/usr/local/lib/python3.14/tarfile.py", line 536, in read
    buf = self._read(size)
  File "/usr/local/lib/python3.14/tarfile.py", line 554, in _read
    buf = self.fileobj.read(self.bufsize)
  File "/usr/local/lib/python3.14/site-packages/securetar/__init__.py", line 306, in read
    self._fill_buffer(size)
    ~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.14/site-packages/securetar/__init__.py", line 622, in _fill_buffer
    plaintext, tag = nss.crypto_secretstream_xchacha20poly1305_pull(
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        self._state, encrypted
        ^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/site-packages/nacl/bindings/crypto_secretstream.py", line 329, in crypto_secretstream_xchacha20poly1305_pull
    ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError)
    ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/nacl/exceptions.py", line 88, in ensure
    raise raising(*args)
nacl.exceptions.RuntimeError: Unexpected failure
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/backups/manager.py", line 733, in _do_restore
    task_hass = await backup.restore_homeassistant()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 307, in wrapper
    raise err
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 299, in wrapper
    return await method(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/backups/backup.py", line 951, in restore_homeassistant
    await self.sys_homeassistant.restore(
        homeassistant_file, self.homeassistant_exclude_database
    )
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 312, in wrapper
    raise JobException() from err
supervisor.exceptions.JobException
2026-04-19 10:27:46.069 INFO (MainThread) [supervisor.backups.manager] Restore 9b0fb756 starting stage await_home_assistant_restart
2026-04-19 10:27:46.104 INFO (MainThread) [supervisor.homeassistant.module] Update pulse/client.config: /data/tmp/homeassistant_pulse
2026-04-19 10:27:46.896 INFO (MainThread) [supervisor.docker.homeassistant] Starting Home Assistant ghcr.io/home-assistant/raspberrypi4-64-homeassistant with version 2026.4.3
2026-04-19 10:27:46.897 INFO (MainThread) [supervisor.homeassistant.core] Wait until Home Assistant is ready
2026-04-19 10:28:11.598 INFO (MainThread) [supervisor.resolution.evaluate] Starting system evaluation with state freeze
2026-04-19 10:28:11.599 INFO (MainThread) [supervisor.resolution.evaluate] System evaluation complete
2026-04-19 10:28:11.985 INFO (MainThread) [supervisor.homeassistant.api] Updated Home Assistant API token
2026-04-19 10:28:11.996 INFO (MainThread) [supervisor.homeassistant.core] Home Assistant Core state changed to APIState(core_state='NOT_RUNNING', offline_db_migration=False)
2026-04-19 10:28:22.088 INFO (MainThread) [supervisor.homeassistant.core] Home Assistant Core state changed to APIState(core_state='RUNNING', offline_db_migration=False)
2026-04-19 10:28:22.088 INFO (MainThread) [supervisor.homeassistant.core] Detect a running Home Assistant instance
2026-04-19 10:28:22.184 ERROR (MainThread) [asyncio] Task exception was never retrieved
future: <Task finished name='Task-3591' coro=<BackupManager.do_restore_partial() done, defined at /usr/src/supervisor/supervisor/jobs/decorator.py:245> exception=BackupError('Restore 9b0fb756 error, see supervisor logs')>
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 299, in wrapper
    return await method(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/homeassistant/module.py", line 546, in restore
    data = await self.sys_run_in_executor(_restore_home_assistant)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 86, in run
    result = ctx.run(self.task)
  File "/usr/local/lib/python3.14/concurrent/futures/thread.py", line 73, in run
    return fn(*args, **kwargs)
  File "/usr/src/supervisor/supervisor/homeassistant/module.py", line 493, in _restore_home_assistant
    backup.extractall(
    ~~~~~~~~~~~~~~~~~^
        path=temp_path,
        ^^^^^^^^^^^^^^^
        filter="tar",
        ^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/tarfile.py", line 2418, in extractall
    self._extract_one(tarinfo, path, set_attrs=not tarinfo.isdir(),
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      numeric_owner=numeric_owner,
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      filter_function=filter_function)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 2521, in _extract_one
    self._extract_member(tarinfo, os.path.join(path, tarinfo.name),
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                         set_attrs=set_attrs,
                         ^^^^^^^^^^^^^^^^^^^^
                         numeric_owner=numeric_owner,
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                         filter_function=filter_function,
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                         extraction_root=path)
                         ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 2610, in _extract_member
    self.makefile(tarinfo, targetpath)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 2667, in makefile
    copyfileobj(source, target, tarinfo.size, ReadError, bufsize)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/tarfile.py", line 249, in copyfileobj
    buf = src.read(bufsize)
  File "/usr/local/lib/python3.14/tarfile.py", line 536, in read
    buf = self._read(size)
  File "/usr/local/lib/python3.14/tarfile.py", line 554, in _read
    buf = self.fileobj.read(self.bufsize)
  File "/usr/local/lib/python3.14/site-packages/securetar/__init__.py", line 306, in read
    self._fill_buffer(size)
    ~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.14/site-packages/securetar/__init__.py", line 622, in _fill_buffer
    plaintext, tag = nss.crypto_secretstream_xchacha20poly1305_pull(
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        self._state, encrypted
        ^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/site-packages/nacl/bindings/crypto_secretstream.py", line 329, in crypto_secretstream_xchacha20poly1305_pull
    ensure(rc == 0, "Unexpected failure", raising=exc.RuntimeError)
    ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.14/site-packages/nacl/exceptions.py", line 88, in ensure
    raise raising(*args)
nacl.exceptions.RuntimeError: Unexpected failure
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/backups/manager.py", line 733, in _do_restore
    task_hass = await backup.restore_homeassistant()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 307, in wrapper
    raise err
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 299, in wrapper
    return await method(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/backups/backup.py", line 951, in restore_homeassistant
    await self.sys_homeassistant.restore(
        homeassistant_file, self.homeassistant_exclude_database
    )
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 312, in wrapper
    raise JobException() from err
supervisor.exceptions.JobException
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 307, in wrapper
    raise err
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 299, in wrapper
    return await method(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/backups/manager.py", line 950, in do_restore_partial
    success = await self._do_restore(
              ^^^^^^^^^^^^^^^^^^^^^^^
    ...<6 lines>...
    )
    ^
  File "/usr/src/supervisor/supervisor/backups/manager.py", line 766, in _do_restore
    raise BackupError(
        f"Restore {backup.slug} error, see supervisor logs"
    ) from err
supervisor.exceptions.BackupError: Restore 9b0fb756 error, see supervisor logs

Both logs refers to “See Supervisor Logs” , so have you, or didn’t it show any clues ?

Also it seems like you have used the default Encryted-Backup method , those credentials, is Not available in a new fresh install , thus it can’t decrypt these, have you saved the Decryption-Token somewhere, of Device ?

I notcied that too, the logs I posted are from the Supervisor logs.

I did use the encryption key from the Emergency Backup Kit when prompted.

tested the encryption key with a very fake key and it immediately errored stating that the key was incorrect. I dont think its an issue with the key, though if there is additional testing, I certainly dont mind that. Or if there is a way to perform decryption outside of HA?

There should be a web-based available in github(not HA official supported), and it’s possible through command-line, neither i have tried
I recently made a new install, and ended up i a situation where restore failed, i never got to that point, as it was fairly new install, and i always have all txt, yaml, json, settings files , manually backed up via Samba-Share, so i can’t see the reason why to encrypt local files

Still troubleshooting this, just not able to work out what the error is. I have attempted full and partial restores. I have also attempted all three full automatic backups that were saved.

I could be wrong but I think the error above is the cause of your issues. Did a quick search & it seems calling ha core rebuild followed by ha core restart might fix it. If you don’t have access to the Terminal via SSH, you’ll have to hook up a keyboard & monitor to your Pi.

Out of curiosity, can you go to the backups screen in the HA UI and attempt to redownload the backups to your PC from there? If it’s not an issue with the encryption key, downloading them from the UI should automatically decrypt them for you.