2025.2 Beta Backup changes

As promised, friends, this thread is opened for discussions about the changes to backups in the 2025.2 Beta release. A few things to note:

  • We do not make any sweeping changes during beta - we focus on fixing bugs potentially introduced in the release and take feedback for the update at the same time.
  • Stay on topic - this thread is about backup changes. If you have feedback or issues with any other aspect of your beta installation, please share that in the Discord server - the devs are highly active there. For those of you new to the server, the #beta channel is under the Support category.
  • Keep it healthy - I know we can all get passionate about Home Assistant. If you feel your emotions get elevated, it’s perfectly acceptable to take a breather and come back to post after the fact. :pray:

Mentioned here, we have several things being adjusted based on everyone’s feedback. What we need from y’all first is to join beta and test things for us! Here’s how if you don’t know:

  • Backup your current instance using your regular method
  • Go to Settings > System > Updates
  • Click this thing (3-dot menu)
  • Then click this (Join beta channel)
  • Next click Join (:tada:)
  • And then refresh the page next to the 3-dot menu (if you don’t see the update available)

Okay okay, but what’s new here? Well, not much if you read my update last week, tbh! This month’s iteration includes:

  • Unencrypted backups
    • With the exception of Home Assistant Cloud, you can now turn off encryption on a per location basis.
    • Backups will always be downloaded unencrypted.
  • Backup scheduling action
    • Customize the time and days for your automatic backups.
    • New backup action to trigger automations.
  • Return of the backup toggle
    • Now turned off by default
    • Shows when you last backed up below it
    • Syncs before updating
    • Separate add-ons toggle specific to them
  • Improved filenames - CURRENTLY A WORK IN PROGRESS
    • Now include the date and time the backup was created

That’s it from me. I look forward to seeing how y’all feel about these changes once you test them out! :raised_hands:

43 Likes

Just an FYI that I am seeing in the Discord server people saying that backups are failing at this time.

If you want to wait until I see that clear, I would absolutely understand that. :slight_smile:

EDIT: If you are ready to get started, it seems like updating Supervisor to 2025.01.1 will resolve the disappearing backups issue.

6 Likes

Excellent! Thanks

For me the Automatic Back-up system is now also fully broken. It fails with Automatic and Manual mode within the new menu.

All backups are no longer present, according to the interface. No Automatic and no Manual backups. All the files are still there though.

I tried rebooting the full host machine, it did not change this sadly.

Core: 2025.2.0b0
Supervisor: 2025.01.0
OS: 14.2
Frontend: 20250129.0

The script I used before still works though and stores the backup on my NAS as it did before this last update. The filenames are still only the slug.tar instead of a readable name.

action: hassio.backup_full
data:
  compressed: true
  location: backup
  name: >-
    Full backup {{
    state_attr('update.home_assistant_core_update','installed_version') }}

The error:

Logger: homeassistant.components.backup
Source: components/backup/manager.py:954
integration: Backup (documentation, issues)
First occurred: 20:58:06 (1 occurrences)
Last logged: 20:58:06

Unexpected error: Field "location_attributes" of type dict[str, BackupLocationAttributes] is missing in BackupComplete instance
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/backup/manager.py", line 954, in _async_finish_backup
    written_backup = await self._backup_task
                     ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/hassio/backup.py", line 379, in _async_wait_for_backup
    details = await self._client.backups.backup_info(backup_id)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohasupervisor/backups.py", line 84, in backup_info
    return BackupComplete.from_dict(result.data)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "<string>", line 72, in __mashumaro_from_dict__
mashumaro.exceptions.MissingField: Field "location_attributes" of type dict[str, BackupLocationAttributes] is missing in BackupComplete instance

Known issue

2 Likes

Supervisor update 2025.01.1 fixed it for me.

All backups are visible again and making an Automatic Backup works now as well.

2 Likes

Relaying this to others, thank you!!

EDIT: I am seeing others in Discord say that the Supervisor update is resolving this. It’s probably safe to say that updating that first before updating to beta is a good thing. :smiley:

3 Likes

Very happy with the changes. It clearly shows you listen to the feedback.

Not a complaint, just a suggestion for future improvement: While self defined backup schedules are a nice addition, the most useful thing about an advanced backup scheme is advanced backup retention. Retain Last 3 days, 3 week backups, one month backup. that kind of thing. And it would even be nicer if that was a setting per storagelocation. Cloud usually has less room to spare, so retention could differ based on available space per storage location.

But I really like the encryption setting per storage type and the unencrypted download.

And now I need to reconfigure onedrive so I can store my backups there too without flooding my poor laptop ssd :slight_smile:

Edit: Ohhhhh! Don’t forget to mention this too, I think this was highly requested too:


Much better visible it is running. Or was that there before?

4 Likes

Good job, both from communication and dev side! Almost every feature seems to be addressed, giving the feeling to be one big community and voices heard. Keep on going this way. :+1:

Don’t know if planned for the future, perhaps just not on top prio list, but I would still prefer entering an own encryption key - or - forcing the user to download / display the key once ( personally will not use encryption, just thinking of my friends; could also be considered as feature request).

5 Likes

My instance is getting bigger and bigger every day (yeah… I love historical data), I know someday I will pass the 5GB barrier of the NC Cloud backup.

Right now backup configuration is done globally, but it would be nice if I can setup one backup with all historic to have it in NAS and/or cloud (GDrrive, OneDrive,…), and also setup other backup using NabuCasa Cloud with the HA settings, configurations, add-ons (not that ones with big databases), etc.

1 Like

From the beta release notes:

To prevent your system for filling up with old add-on backups, we automatically delete the previous versions of the add-on backup after a new one is created.

Hmm. That’s different from how it used to work. Now it will automatically erase any previous add-on backups.

Will it also automatically delete add-on backups that I have created manually? Or only the ones the backup system created?

What I am looking for is the ability to retain the last 2 add-on backups.

8 Likes

I think you are in luck

For as much as I wrote walls of text to complain I will absolutely stand up here and give the whole team a hearty golf clap… Wow. This is. Simply awesomeness…

I’m reading the notes and most of the feedback was addressed. There’s a com plan. There’s recognition that this (backup) is fundamental and must work. I mean yeah there’s minor things like the things Tara’s mentioned but…

Full stop. @MissyQ thank you. Thank you for this. It had the potential to go very wrong and I feel that danger is in the rear view if you guys stay this course…

(and for those who don’t live in customer support what this team has done here is nothing short of miraculous. They literally would have had a Sonos moment… You don’t see client support and response teams respond like this… Like ever. And I’ve been in client support since 1993)

Now back to our regularly scheduled griping about stuff. :sunglasses:

23 Likes

Yeah, when I wanted to update to 2025.2.0b it said to first update the Supervisor to 2025.01.0 as that was the latest available.

2 Likes

Only thing I have not yet gotten working is the new OneDrive option.

I’m guessing I need to add is as an Integration under Microsoft → OneDrive, on the Microsoft side it is linking correctly. But Home Assistant just gives this error after it fails:

Screenshot 2025-01-29 at 22.46.34

The log gives the following, is there a specific spot to report the bugs for the RC release?:

Logger: aiohttp.server
Source: /usr/local/lib/python3.13/site-packages/aiohttp/web_protocol.py:451
First occurred: 21:15:49 (4 occurrences)
Last logged: 22:46:28

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/aiohttp/web_protocol.py", line 480, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/web_app.py", line 569, in _handle
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 210, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 86, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin
    return await func(self, request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 215, in get
    return await super().get(request, flow_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 107, in get
    result = await self._flow_mgr.async_configure(flow_id)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 340, in async_configure
    result = await self._async_configure(flow_id, user_input)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 387, in _async_configure
    result = await self._async_handle_step(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        flow, cur_step["step_id"], user_input
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 490, in _async_handle_step
    result: _FlowResultT = await getattr(flow, method)(user_input)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/config_entry_oauth2_flow.py", line 361, in async_step_creation
    return await self.async_oauth_create_entry(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        {"auth_implementation": self.flow_impl.domain, "token": token}
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/src/homeassistant/homeassistant/components/onedrive/config_flow.py", line 97, in async_oauth_create_entry
    title = f"{drive['shared']['owner']['user']['displayName']}'s OneDrive"
               ~~~~~^^^^^^^^^^
KeyError: 'shared'

Bravo! Good, clear communication listing all the key points, and how they were addressed. Without actually seeing the beta (yet) myself, it looks like not only were my concerns addressed, but everyone got pretty much what they were asking for.

Again assuming it all works as you say, it looks like we’re not losing any functionality from before, but gaining some very good options. This is how things should be done for a great project like HA.

Kudos to the whole team! The future of HA looks bright again. And thanks again @MissyQ for your efforts in mediating the discussion.

4 Likes

I agree. It already happened to me in the past that the breaking issue was recognized too late, requiring rolling 2 versions back.

IMO there should be configurable retention in place or no retention at all (leave it in a maintainer hands).

Whould be perfect if backup process could predict the required disk space refusing to proceed if this prerequisite is not matched.

1 Like

I don’t think so… That’s for adding new locations, but I cannot specify two different backup setups with different data (settings, history, add-ons, …)

Improved filenames for backups

Has someone checked the filenames?
Actually i cant see the mentioned improvement.

# ls -al /mnt/data/supervisor/backup
total 485864
drwxr-xr-x    3 root     root          4096 Jan 29 21:57 .
drwxr-xr-x   17 root     root          4096 Jan 29 21:34 ..
-rw-r--r--    1 root     root     126392320 Jan 29 21:57 22e3cb04.tar
-rw-r--r--    1 root     root       4556800 Jan 28 08:13 5e1d93d4.tar
-rw-r--r--    1 root     root     114206720 Jan 27 03:55 75f0a060.tar
-rw-r--r--    1 root     root     126054400 Jan 29 21:20 cece474e.tar
-rw-r--r--    1 root     root     126289920 Jan 29 21:41 fd0019fa.tar

GREAT question. It will only remove the ones the backup system created. As Paulus explained it to me, the toggle will only control the backups the toggle made - your manual ones will remain.

Thank you everyone for the compliments on our efforts! :smiling_face_with_three_hearts: I am pleased to see they have not gone unnoticed and it’s great to hear that they’re appreciated.

13 Likes