mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 21:57:51 +00:00
Speed up backups (#90613)
This commit is contained in:
parent
b47ac524ea
commit
00a4279d64
@ -23,6 +23,8 @@ from homeassistant.util.json import json_loads_object
|
|||||||
|
|
||||||
from .const import DOMAIN, EXCLUDE_FROM_BACKUP, LOGGER
|
from .const import DOMAIN, EXCLUDE_FROM_BACKUP, LOGGER
|
||||||
|
|
||||||
|
BUF_SIZE = 2**20 * 4 # 4MB
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Backup:
|
class Backup:
|
||||||
@ -99,7 +101,7 @@ class BackupManager:
|
|||||||
backups: dict[str, Backup] = {}
|
backups: dict[str, Backup] = {}
|
||||||
for backup_path in self.backup_dir.glob("*.tar"):
|
for backup_path in self.backup_dir.glob("*.tar"):
|
||||||
try:
|
try:
|
||||||
with tarfile.open(backup_path, "r:") as backup_file:
|
with tarfile.open(backup_path, "r:", bufsize=BUF_SIZE) as backup_file:
|
||||||
if data_file := backup_file.extractfile("./backup.json"):
|
if data_file := backup_file.extractfile("./backup.json"):
|
||||||
data = json_loads_object(data_file.read())
|
data = json_loads_object(data_file.read())
|
||||||
backup = Backup(
|
backup = Backup(
|
||||||
@ -227,7 +229,7 @@ class BackupManager:
|
|||||||
self.backup_dir.mkdir()
|
self.backup_dir.mkdir()
|
||||||
|
|
||||||
with TemporaryDirectory() as tmp_dir, SecureTarFile(
|
with TemporaryDirectory() as tmp_dir, SecureTarFile(
|
||||||
tar_file_path, "w", gzip=False
|
tar_file_path, "w", gzip=False, bufsize=BUF_SIZE
|
||||||
) as tar_file:
|
) as tar_file:
|
||||||
tmp_dir_path = Path(tmp_dir)
|
tmp_dir_path = Path(tmp_dir)
|
||||||
save_json(
|
save_json(
|
||||||
@ -237,6 +239,7 @@ class BackupManager:
|
|||||||
with SecureTarFile(
|
with SecureTarFile(
|
||||||
tmp_dir_path.joinpath("./homeassistant.tar.gz").as_posix(),
|
tmp_dir_path.joinpath("./homeassistant.tar.gz").as_posix(),
|
||||||
"w",
|
"w",
|
||||||
|
bufsize=BUF_SIZE,
|
||||||
) as core_tar:
|
) as core_tar:
|
||||||
atomic_contents_add(
|
atomic_contents_add(
|
||||||
tar_file=core_tar,
|
tar_file=core_tar,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user