From 70df79079ff636d53a35f5d71d3c46b22cb15e31 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Sun, 23 Nov 2025 17:53:13 +0100 Subject: [PATCH] fix(backups): correctly apply repository compression mode --- app/server/modules/backups/backups.service.ts | 1 + app/server/utils/restic.ts | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/server/modules/backups/backups.service.ts b/app/server/modules/backups/backups.service.ts index 2a6dde4..669fbfb 100644 --- a/app/server/modules/backups/backups.service.ts +++ b/app/server/modules/backups/backups.service.ts @@ -238,6 +238,7 @@ const executeBackup = async (scheduleId: number, manual = false) => { await restic.backup(repository.config, volumePath, { ...backupOptions, + compressionMode: repository.compressionMode ?? "auto", onProgress: (progress) => { serverEvents.emit("backup:progress", { scheduleId, diff --git a/app/server/utils/restic.ts b/app/server/utils/restic.ts index 658e094..1ef957f 100644 --- a/app/server/utils/restic.ts +++ b/app/server/utils/restic.ts @@ -9,7 +9,7 @@ import { logger } from "./logger"; import { cryptoUtils } from "./crypto"; import type { RetentionPolicy } from "../modules/backups/backups.dto"; import { safeSpawn } from "./spawn"; -import type { RepositoryConfig } from "~/schemas/restic"; +import type { CompressionMode, RepositoryConfig } from "~/schemas/restic"; const backupOutputSchema = type({ message_type: "'summary'", @@ -234,6 +234,7 @@ const backup = async ( exclude?: string[]; include?: string[]; tags?: string[]; + compressionMode?: CompressionMode; signal?: AbortSignal; onProgress?: (progress: BackupProgress) => void; }, @@ -241,7 +242,14 @@ const backup = async ( const repoUrl = buildRepoUrl(config); const env = await buildEnv(config); - const args: string[] = ["--repo", repoUrl, "backup", "--one-file-system"]; + const args: string[] = [ + "--repo", + repoUrl, + "backup", + "--one-file-system", + "--compression", + options?.compressionMode ?? "auto", + ]; if (options?.tags && options.tags.length > 0) { for (const tag of options.tags) { @@ -291,6 +299,7 @@ const backup = async ( let stdout = ""; + logger.debug(`Executing: restic ${args.join(" ")}`); const res = await safeSpawn({ command: "restic", args,