The handling of canceled jobs in bareos has caused me some issues, particularly 
because a canceled job is not considered success, so if you have rerun failed 
levels enabled you can end up running the same level over and over. My solution 
here deals with that by deleting the canceled jobs, which is what you want.


/etc/bareos/bareos-dir.d/jobdefs/LTO-Backup.conf
JobDefs {
  Name = "LTO-Backup"
  Type = Backup
  Level = Incremental
  Schedule = "WeeklyCycle"
  Messages = Standard
  Pool = LTO-5
  Priority = 30
  Rerun Failed Levels = yes
  Accurate = yes
  Spool Data = yes

  # retry failed backups
  Reschedule On Error = yes
  Reschedule Interval = 1 minute
  Reschedule Times = 10

  #Write Bootstrap = "|/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \" -s 
\"Bootstrap for Job %j\" root@localhost" # (#01)
  Write Bootstrap = /var/lib/bareos/bootstrap/%c.bsr

  AllowDuplicateJobs = no
  CancelLowerLevelDuplicates = yes
  CancelQueuedDuplicates = yes

  # handle long running jobs and canceling duplicates
  RunScript {
    RunsWhen = After
    RunsOnFailure = Yes
    FailJobOnError = No
    RunsOnClient = No
    Command = "/etc/bareos/delete-canceled-job.sh %e %i"
  }

}



/etc/bareos/delete-canceled-job.sh
#!/bin/sh

debug() { ! "${log_debug-false}" || log "DEBUG: $*" >&2; }
log() { printf '%s\n' "$*"; }
warn() { log "WARNING: $*" >&2; }
error() { log "ERROR: $*" >&2; }
fatal() { error "$*"; exit 1; }
try() { "$@" || fatal "'$@' failed"; }

mydir=$(cd "$(dirname "$0")" && pwd -L) || fatal "Unable to determine script 
directory"

# call as delete-canceled-job.sh %e %i
status=$1
jobid=$2

if [ "Canceled" = "${status}" ]; then
    log "Deleting canceled job ${jobid}"
    #echo "Run 'delete jobid=${jobid}' inside bareos console" | mail -s "delete 
canceled" [email protected]
    #echo "delete jobid=${jobid} | bconsole"

    # schedule with at so that the job can complete and then later be deleted
    echo "/etc/bareos/delete-canceled-job_doit.sh ${jobid}" | at now + 2 minutes
fi



/etc/bareos/delete-canceled-job_doit.sh
#!/bin/sh

debug() { ! "${log_debug-false}" || log "DEBUG: $*" >&2; }
log() { printf '%s\n' "$*"; }
warn() { log "WARNING: $*" >&2; }
error() { log "ERROR: $*" >&2; }
fatal() { error "$*"; exit 1; }
try() { "$@" || fatal "'$@' failed"; }

mydir=$(cd "$(dirname "$0")" && pwd -L) || fatal "Unable to determine script 
directory"

# called from at, scheduled by delete-canaceled-job.sh
jobid=$1

debug "Deleting canceled job ${jobid}"
#echo "Run 'delete jobid=${jobid}' inside bareos console" | mail -s "delete 
canceled" [email protected]

output=$(echo "delete jobid=${jobid}" | bconsole 2>&1)
if [ $? -ne 0 ]; then
    error ${output}
    fatal "Error deleting job ${jobid}"
fi

# output anything that we don't expect
echo "${output}" \
        | grep -v "Automatically selected Catalog" \
        | grep -v "Using Catalog" \
        | grep -v "You have messages" \
        | grep -v "deleted from the catalog" \
        | grep -v "delete jobid=${jobid}" \
        | grep -v "Enter a period" \
        | grep -v "You are connected using" \
        | grep -v "Get official binaries and vendor support" \
        | grep -v "bareos.org binaries are UNSUPPORTED by bareos.com" \
        | grep -v "bareos.org build binary" \
        | grep -v "1000 OK" \
        | grep -v "Encryption:" \
        | grep -v "Connecting to Director" \
        | grep -v -e '^[[:space:]]*$'

# debugging
#echo "delete jobid=${jobid}" \
#        | bconsole 2>&1
#log "status $?"

exit 0


Jon Schewe

Principal Software Systems Technologist

C: +1 612.263.2718

O: +1 952.545.5720

[email protected]

Raytheon Technologies

Raytheon Intelligence & Space

5775 Wayzata Blvd. Suite 630

St. Louis Park, MN 55416


RTX.com<https://www.rtx.com/> | 
LinkedIn<https://www.linkedin.com/company/raytheontechnologies> | 
Twitter<https://twitter.com/raytheontech> | 
Instagram<https://www.instagram.com/raytheontechnologies>

________________________________
From: 'Birgit Ducarroz' via bareos-users <[email protected]>
Sent: Tuesday, November 9, 2021 03:06
To: bareos-users <[email protected]>
Subject: [External] [bareos-users] Do Not Try to Run Duplicated Jobs


Hi list,

Is there a possibility to not run and then cancel duplicated jobs?
In my actual config...

Allow Duplicate Jobs = no
Cancel Lower Level Duplicates = yes
Cancel Queued Duplicates = yes

... duplicate jobs cancel which creates me a lot of canceled jobs in the 
dashboard while running a set of full backups which are running more than one 
day. But I even don't want to list all these canceled jobs.

Thank you for any hint!
Kind regards,
Birgit

--
You received this message because you are subscribed to the Google Groups 
"bareos-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
[email protected]<mailto:[email protected]>.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/bareos-users/46d2bc51-b789-47bc-a328-4b2386e98fd3n%40googlegroups.com<https://groups.google.com/d/msgid/bareos-users/46d2bc51-b789-47bc-a328-4b2386e98fd3n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"bareos-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/bareos-users/SN5P110MB0912FB36F1CADC3361836A82ED929%40SN5P110MB0912.NAMP110.PROD.OUTLOOK.COM.

Reply via email to