diff --git a/homeassistant/components/backup/manager.py b/homeassistant/components/backup/manager.py index 378cf1c0335..83121e8bf38 100644 --- a/homeassistant/components/backup/manager.py +++ b/homeassistant/components/backup/manager.py @@ -10,7 +10,7 @@ from enum import StrEnum import hashlib import io import json -from pathlib import Path +from pathlib import Path, PurePath import shutil import tarfile import time @@ -1231,6 +1231,17 @@ class CoreBackupReaderWriter(BackupReaderWriter): if not database_included: excludes = excludes + EXCLUDE_DATABASE_FROM_BACKUP + def is_excluded_by_filter(path: PurePath) -> bool: + """Filter to filter excludes.""" + + for exclude in excludes: + if not path.match(exclude): + continue + LOGGER.debug("Ignoring %s because of %s", path, exclude) + return True + + return False + outer_secure_tarfile = SecureTarFile( tar_file_path, "w", gzip=False, bufsize=BUF_SIZE ) @@ -1249,7 +1260,7 @@ class CoreBackupReaderWriter(BackupReaderWriter): atomic_contents_add( tar_file=core_tar, origin_path=Path(self._hass.config.path()), - excludes=excludes, + file_filter=is_excluded_by_filter, arcname="data", ) return (tar_file_path, tar_file_path.stat().st_size) diff --git a/homeassistant/components/backup/manifest.json b/homeassistant/components/backup/manifest.json index b399043e013..9d8d9956097 100644 --- a/homeassistant/components/backup/manifest.json +++ b/homeassistant/components/backup/manifest.json @@ -8,5 +8,5 @@ "integration_type": "system", "iot_class": "calculated", "quality_scale": "internal", - "requirements": ["cronsim==2.6", "securetar==2024.11.0"] + "requirements": ["cronsim==2.6", "securetar==2025.1.1"] } diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 2582c872f16..0c601f37b0b 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -60,7 +60,7 @@ PyTurboJPEG==1.7.5 pyudev==0.24.1 PyYAML==6.0.2 requests==2.32.3 -securetar==2024.11.0 +securetar==2025.1.1 SQLAlchemy==2.0.36 standard-aifc==3.13.0;python_version>='3.13' standard-telnetlib==3.13.0;python_version>='3.13' diff --git a/pyproject.toml b/pyproject.toml index 7e32b6b61b1..b1bac5a2e15 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,7 +67,7 @@ dependencies = [ "python-slugify==8.0.4", "PyYAML==6.0.2", "requests==2.32.3", - "securetar==2024.11.0", + "securetar==2025.1.1", "SQLAlchemy==2.0.36", "standard-aifc==3.13.0;python_version>='3.13'", "standard-telnetlib==3.13.0;python_version>='3.13'", diff --git a/requirements.txt b/requirements.txt index 925985dfd42..a8b816b89d5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -38,7 +38,7 @@ psutil-home-assistant==0.0.1 python-slugify==8.0.4 PyYAML==6.0.2 requests==2.32.3 -securetar==2024.11.0 +securetar==2025.1.1 SQLAlchemy==2.0.36 standard-aifc==3.13.0;python_version>='3.13' standard-telnetlib==3.13.0;python_version>='3.13' diff --git a/requirements_all.txt b/requirements_all.txt index b918cc3e944..374199406f6 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2665,7 +2665,7 @@ screenlogicpy==0.10.0 scsgate==0.1.0 # homeassistant.components.backup -securetar==2024.11.0 +securetar==2025.1.1 # homeassistant.components.sendgrid sendgrid==6.8.2 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 25dc0470bfd..13afc39bf18 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -2147,7 +2147,7 @@ sanix==1.0.6 screenlogicpy==0.10.0 # homeassistant.components.backup -securetar==2024.11.0 +securetar==2025.1.1 # homeassistant.components.emulated_kasa # homeassistant.components.sense