Hi, I use a python script with RunBeforeJob = "/usr/local/sbin/delete_client_trolling_pool_1mois.py %c %l"
( not in run time ). And my bacula is 7.0.5 i place my script for an exemple, : ------------------------------------------------------------------------------- #!/usr/bin/env python2 # -*- coding: UTF-8 -*- # Script pour effacer tout ce qui est avant la derniere Full # Uniquement executer par Bacula en before # param 1 : nom du client post fixer avec -fd # param 2 : JobLevel ( Full ou Incremental ) # Attention dangereux si un job est splitte en plusieurs bande ( Maximum Volume Bytes ) import collections import os import re import subprocess import sys import psycopg2 Volume = collections.namedtuple('Volume', 'level, startTime, volumeName') hostname = re.match(r'^(.+?)(-fd)?$', sys.argv[1]).group(1) joblevel=sys.argv[2] # hostname exception if hostname == "xxxxx": sys.exit() if joblevel != "Full": sys.exit() conn = psycopg2.connect("dbname=bacula user=postgres") cur = conn.cursor() cur.execute("""SELECT DISTINCT Level,StartTime,VolumeName FROM Client,Job,JobMedia,Media,FileSet WHERE Client.Name='{hostname}-fd' AND FileSet='fileset_{hostname}' AND Client.ClientId=Job.ClientId AND Job.Type='B' AND Job.JobStatus='T' AND Job.FileSetId=FileSet.FileSetId AND JobMedia.JobId=Job.JobId AND JobMedia.MediaId=Media.MediaId ORDER BY Job.StartTime;""".format(hostname=hostname)) results = [ Volume._make(item) for item in cur.fetchall() ] # recupere le nombre de totale de la requete SQL fullNum = len([ item for item in results if item.level == 'F' ]) deleteList = [] for item in results: if fullNum > 1: if item.level == 'F': fullNum -= 1 deleteList.append(item) else: if item.level == 'F': break else: deleteList.append(item) ## Debugging #for item in results: # if item in deleteList: # print '\033[1;31m%s\033[0m' % str(item) # else: # print item p_stdin = "" for item in deleteList: p_stdin += "purge volume=%s\n" % item.volumeName p_bconsole = subprocess.Popen(['/usr/sbin/bconsole'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) p_stdout, p_stderr = p_bconsole.communicate( p_stdin ) ##print p_stdout, p_stderr for item in deleteList: _path = os.path.join('/sauvegarde', hostname, item.volumeName) # print _path try: os.unlink(_path) except OSError: pass # EOF - vim:ts=4:sw=4:et:bg=dark: ------------------------------------------------------------------------------- ------------------------------------------------------------------------------ BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT Develop your own process in accordance with the BPMN 2 standard Learn Process modeling best practices with Bonita BPM through live exercises http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users