From b56e3ad869c0cfe7ae51a8d628b4f1b056650c11 Mon Sep 17 00:00:00 2001 From: Alexandre Lavigne Date: Sun, 14 Apr 2024 13:14:43 +0200 Subject: [PATCH] Improve recursive object restore When restoring a complete bucket stop and raise an error only when the configuration is set to stop on the first error. otherwise keep trying to restore the next objects. closes #1369 Signed-off-by: Alexandre Lavigne --- s3cmd | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/s3cmd b/s3cmd index 2db88f25..204ea9f3 100755 --- a/s3cmd +++ b/s3cmd @@ -923,6 +923,8 @@ def cmd_object_restore(args): warning(u"Exiting now because of --dry-run") return EX_OK + ret = EX_OK + for key in remote_list: item = remote_list[key] @@ -934,11 +936,15 @@ def cmd_object_restore(args): except S3Error as e: if e.code == "RestoreAlreadyInProgress": warning("%s: %s" % (e.message, item['object_uri_str'])) - else: + elif cfg.stop_on_error: raise e + else: + error("restore failed for: '%s' (%s)", item['object_uri_str'], e) + ret = EX_PARTIAL + else: debug(u"Skipping directory since only files may be restored") - return EX_OK + return ret def subcmd_cp_mv(args, process_fce, action_str, message):