From fb11ad022ef08d814eaa61fb4903d94c84fb382a Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Tue, 7 May 2024 19:03:37 +0200 Subject: [PATCH] Add --force-zero support for sync --- snapraid-runner.conf.example | 4 ++++ snapraid-runner.py | 12 +++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/snapraid-runner.conf.example b/snapraid-runner.conf.example index f99f40b..27f0d15 100644 --- a/snapraid-runner.conf.example +++ b/snapraid-runner.conf.example @@ -51,3 +51,7 @@ enabled = false plan = 12 ; minimum block age (in days) for scrubbing. Only used with percentage plans older-than = 10 + +[sync] +; set to true to force sync files with zero size +force-zero = false diff --git a/snapraid-runner.py b/snapraid-runner.py index d08c05b..755450c 100755 --- a/snapraid-runner.py +++ b/snapraid-runner.py @@ -42,7 +42,9 @@ def snapraid_command(command, args={}, *, allow_statuscodes=[]): arguments = ["--conf", config["snapraid"]["config"], "--quiet"] for (k, v) in args.items(): - arguments.extend(["--" + k, str(v)]) + arguments.append("--" + k) + if v != '': + arguments.append(str(v)) p = subprocess.Popen( [config["snapraid"]["executable"], command] + arguments, stdout=subprocess.PIPE, @@ -154,7 +156,7 @@ def load_config(args): global config parser = configparser.RawConfigParser() parser.read(args.conf) - sections = ["snapraid", "logging", "email", "gotify", "smtp", "scrub"] + sections = ["snapraid", "logging", "email", "gotify", "smtp", "scrub", "sync"] config = dict((x, defaultdict(lambda: "")) for x in sections) for section in parser.sections(): for (k, v) in parser.items(section): @@ -175,6 +177,7 @@ def load_config(args): config["scrub"]["enabled"] = (config["scrub"]["enabled"].lower() == "true") config["email"]["short"] = (config["email"]["short"].lower() == "true") config["snapraid"]["touch"] = (config["snapraid"]["touch"].lower() == "true") + config["sync"]["force-zero"] = (config["sync"]["force-zero"].lower() == "true") # Migration if config["scrub"]["percentage"]: @@ -302,8 +305,11 @@ def run(): logging.info("No changes detected, no sync required") else: logging.info("Running sync...") + sync_args: dict[str, str] = {} + if config["sync"]["force-zero"]: + sync_args["force-zero"] = "" try: - snapraid_command("sync") + snapraid_command("sync", sync_args) except subprocess.CalledProcessError as e: logging.error(e) finish(False)