3
# Datenverzeichnis von Goobi
4
Goobidata=/home/goobi/work/staging1
5
# Unterverzeichnis in dem die Images liegen
7
# Unterverzeichnisstruktur, in der bestimmte Images liegen - z.B. Originalscans, beschnittene Scans usw.
9
# Liste der Imagevarianten
11
# Verzeichnis, in dem die später per Cron zu bearbeitenden Goobi Jobs abgelegt werden soll
12
JobDir=$Goobidata/jobs
15
# Funktion: Goobi ID der Vorganges ermitteln
17
# Aufruf: DetectGoobiID
18
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: DetectGoobiID"; fi
19
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Linkname |sed -e 's/.*\[\(.*\)\]$/\1/'"; fi
20
ID=`echo "$Linkname" |sed -e 's/.*\[\(.*\)\]$/\1/'`
25
# Funktion: Zeitstempel der aktuellsten Datei ermitteln und ermittelten Zeitstempel mit gespeicherten vergleichen
27
# Aufruf: TimestampCompare ArtDerImages
28
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: TimestampCompare $1"; fi
30
# cTime-Zeitstempel der aktuellsten Datei ermitteln
31
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "stat -c %Z $Goobidata/$ID/$Images/${Scans}$Job/`ls -tc $Goobidata/$ID/$Images/${Scans}$Job |head -1`"; fi
32
local cTimestamp=`stat -c %Z $Goobidata/$ID/$Images/${Scans}$Job/\`ls -tc $Goobidata/$ID/$Images/${Scans}$Job |head -1\``
33
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: cTimestamp = ${cTimestamp}"; fi
36
if [ -z $cTimestamp ]; then logger -p user.info -t $0 "cTime-Zeitstempel der aktuellsten Datei konnte nicht ermittelt werden"; return; fi
37
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "cTime-Zeitstempel der aktuellsten Datei: $cTimestamp"; fi
38
# Ermittelten cTime-Zeitstempel mit gespeicherten vergleichen
39
if [ -f $Goobidata/$ID/$Job.ctimestamp ]
41
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Ein gespeicherter cTime-Zeitstempel existiert in $Goobidata/$ID/$Job.ctimestamp"; fi
42
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Goobidata/$ID/$Job.ctimestamp"; fi
43
local cTimestampSave=`cat $Goobidata/$ID/$Job.ctimestamp`
44
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: cTimestampSave = ${cTimestampSave}"; fi
47
if [ -z $cTimestampSave ]; then logger -p user.info -t $0 "Gespeicherter cTime-Zeitstempel konnte nicht ermittelt werden"; return; fi
48
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Gespeicherter cTime-Zeitstempel: $cTimestampSave"; fi
49
# Prüfung, ob der cTime-Zeitstempel neuer als der gespeicherte ist
50
if [ "$cTimestamp" -gt "$cTimestampSave" ]
52
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der cTime-Zeitstempel $cTimestamp ist neuer als der gespeicherte cTime-Zeitstempel $cTimestampSave"; fi
53
# Gespeicherten cTime-Zeitstempel mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
54
cTimestampNew $cTimestamp $Job
56
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der cTime-Zeitstempel $cTimestamp ist nicht neuer als der gespeicherte cTime-Zeitstempel in $cTimestampSave"; fi
58
# Ermittelten cTime-Zeitstempel mit vorübergehend deaktivierten vergleichen
59
elif [ -f $Goobidata/$ID/$Job.ctimestamp.bak ]
61
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Ein vorübergehend deaktivierter cTime-Zeitstempel existiert in $Goobidata/$ID/$Job.ctimestamp.bak"; fi
62
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mv $Goobidata/$ID/$Job.ctimestamp.bak $Goobidata/$ID/$Job.ctimestamp"; fi
63
mv $Goobidata/$ID/$Job.ctimestamp.bak $Goobidata/$ID/$Job.ctimestamp
66
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Goobidata/$ID/$Job.ctimestamp"; fi
67
local cTimestampSave=`cat $Goobidata/$ID/$Job.ctimestamp`
68
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: cTimestampSave = ${cTimestampSave}"; fi
71
if [ -z $cTimestampSave ]; then logger -p user.info -t $0 "Vorübergehend deaktivierter cTime-Zeitstempel konnte nicht ermittelt werden"; return; fi
72
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Vorübergehend deaktivierter cTime-Zeitstempel: $cTimestampSave"; fi
73
# Prüfung, ob der cTime-Zeitstempel neuer oder gleich dem vorübergehend deaktivierten ist
74
if [ "$cTimestamp" -ge "$cTimestampSave" ]
76
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der cTime-Zeitstempel $cTimestamp ist neuer als oder gleich dem vorübergehend deaktivierten cTime-Zeitstempel $cTimestampSave"; fi
77
# Gespeicherten cTime-Zeitstempel mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
78
cTimestampNew $cTimestamp $Job
80
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der cTime-Zeitstempel $cTimestamp ist älter als der vorübergehend deaktivierte cTime-Zeitstempel in $cTimestampSave"; fi
81
# Da nur falls ein Job definiert ist, ein vorübergehend deaktivierter cTime-Zeitstempel existiert: Gespeicherten cTime-Zeitstempel trotzdem mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
82
cTimestampNew $cTimestamp $Job
85
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Es existiert kein gespeicherter cTime-Zeitstempel, ein neuer wird angelegt"; fi
86
# Gespeicherten cTime-Zeitstempel generieren, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
87
cTimestampNew $cTimestamp $Job
89
# Zeitstempel der aktuellsten Datei ermitteln
90
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "stat -c %Y $Goobidata/$ID/$Images/${Scans}$Job/`ls -t $Goobidata/$ID/$Images/${Scans}$Job |head -1`"; fi
91
local Timestamp=`stat -c %Y $Goobidata/$ID/$Images/${Scans}$Job/\`ls -t $Goobidata/$ID/$Images/${Scans}$Job |head -1\``
92
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: Timestamp = ${Timestamp}"; fi
95
if [ -z $Timestamp ]; then logger -p user.info -t $0 "Zeitstempel der aktuellsten Datei konnte nicht ermittelt werden"; return; fi
96
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Zeitstempel der aktuellsten Datei: $Timestamp"; fi
97
# Ermittelten Zeitstempel mit gespeicherten vergleichen
98
if [ -f $Goobidata/$ID/$Job.timestamp ]
100
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Ein gespeicherter Zeitstempel existiert in $Goobidata/$ID/$Job.timestamp"; fi
101
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Goobidata/$ID/$Job.timestamp"; fi
102
local TimestampSave=`cat $Goobidata/$ID/$Job.timestamp`
103
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: TimestampSave = ${TimestampSave}"; fi
106
if [ -z $TimestampSave ]; then logger -p user.info -t $0 "Gespeicherter Zeitstempel konnte nicht ermittelt werden"; return; fi
107
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Gespeicherter Zeitstempel: $TimestampSave"; fi
108
# Prüfung, ob der Zeitstempel neuer als der gespeicherte ist
109
if [ "$Timestamp" -gt "$TimestampSave" ]
111
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der Zeitstempel $Timestamp ist neuer als der gespeicherte Zeitstempel $TimestampSave"; fi
112
# Gespeicherten Zeitstempel mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
113
TimestampNew $Timestamp $Job
115
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der Zeitstempel $Timestamp ist nicht neuer als der gespeicherte Zeitstempel in $TimestampSave"; fi
117
# Ermittelten Zeitstempel mit vorübergehend deaktivierten vergleichen
118
elif [ -f $Goobidata/$ID/$Job.timestamp.bak ]
120
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Ein vorübergehend deaktivierter Zeitstempel existiert in $Goobidata/$ID/$Job.timestamp.bak"; fi
121
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mv $Goobidata/$ID/$Job.timestamp.bak $Goobidata/$ID/$Job.timestamp"; fi
122
mv $Goobidata/$ID/$Job.timestamp.bak $Goobidata/$ID/$Job.timestamp
125
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Goobidata/$ID/$Job.timestamp"; fi
126
local TimestampSave=`cat $Goobidata/$ID/$Job.timestamp`
127
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "DEBUG\: TimestampSave = ${TimestampSave}"; fi
130
if [ -z $TimestampSave ]; then logger -p user.info -t $0 "Vorübergehend deaktivierter Zeitstempel konnte nicht ermittelt werden"; return; fi
131
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Vorübergehend deaktivierter Zeitstempel: $TimestampSave"; fi
132
# Prüfung, ob der Zeitstempel neuer oder gleich dem vorübergehend deaktivierten ist
133
if [ "$Timestamp" -ge "$TimestampSave" ]
135
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der Zeitstempel $Timestamp ist neuer als oder gleich dem vorübergehend deaktivierten Zeitstempel $TimestampSave"; fi
136
# Gespeicherten Zeitstempel mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
137
TimestampNew $Timestamp $Job
139
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Der Zeitstempel $Timestamp ist älter als der vorübergehend deaktivierte Zeitstempel in $TimestampSave"; fi
140
# Da nur falls ein Job definiert ist, ein vorübergehend deaktivierter Zeitstempel existiert: Gespeicherten Zeitstempel trotzdem mit neuem ersetzen, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
141
TimestampNew $Timestamp $Job
144
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Es existiert kein gespeicherter Zeitstempel, ein neuer wird angelegt"; fi
145
# Gespeicherten Zeitstempel generieren, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
146
TimestampNew $Timestamp $Job
150
# Funktion: Gespeicherten Zeitstempel erzeugen oder überschreiben, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
152
# Aufruf: cTimestampNew Zeitstempel ArtderImages
153
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: cTimestampNew $1 $2"; fi
154
local cTimestamp="$1"
156
# Gespeicherten cTime-Zeitstempel erzeugen oder überschreiben
157
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $cTimestamp >$Goobidata/$ID/$Job.ctimestamp"; fi
158
echo "$cTimestamp" >$Goobidata/$ID/$Job.ctimestamp
161
# Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
162
if [ ! -d $JobDir/$Job ]
164
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Verzeichnis $JobDir/$Job zur Aufnahme der zu bearbeitenden Jobs existiert noch nicht"; fi
165
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mkdir -p $JobDir/$Job"; fi
166
mkdir -p $JobDir/$Job
170
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "touch $JobDir/$Job/$ID"; fi
171
touch $JobDir/$Job/$ID
176
# Funktion: Gespeicherten Zeitstempel erzeugen oder überschreiben, Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
178
# Aufruf: TimestampNew Zeitstempel ArtderImages
179
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: TimestampNew $1 $2"; fi
182
# Gespeicherten Zeitstempel erzeugen oder überschreiben
183
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "echo $Timestamp >$Goobidata/$ID/$Job.timestamp"; fi
184
echo "$Timestamp" >$Goobidata/$ID/$Job.timestamp
187
# Goobi ID des Vorganges für spätere Jobabarbeitung hinterlegen
188
if [ ! -d $JobDir/$Job ]
190
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Verzeichnis $JobDir/$Job zur Aufnahme der zu bearbeitenden Jobs existiert noch nicht"; fi
191
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mkdir -p $JobDir/$Job"; fi
192
mkdir -p $JobDir/$Job
196
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "touch $JobDir/$Job/$ID"; fi
197
touch $JobDir/$Job/$ID
202
# Funktion: Gespeicherten Zeitstempel vorübergehend deaktivieren und die später per Cron zu erledigenden Jobdefinitionen löschen
204
# Aufruf: TimestampBackup ArtderImages
205
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Aufruf der Funktion: TimestampBackup $1"; fi
207
# Die später per Cron zu erledigenden Jobdefinitionen löschen
208
if [ -f $JobDir/$Job/$ID ]
210
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "rm $JobDir/$Job/$ID"; fi
214
# Gespeicherten cTime-Zeitstempel vorübergehend deaktivieren
215
if [ -f $Goobidata/$ID/$Job.ctimestamp ]
217
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mv $Goobidata/$ID/$Job.ctimestamp $Goobidata/$ID/$Job.ctimestamp.bak"; fi
218
mv $Goobidata/$ID/$Job.ctimestamp $Goobidata/$ID/$Job.ctimestamp.bak
222
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Gespeicherter cTime-Zeitstempel $Goobidata/$ID/$Job.ctimestamp existiert nicht"; fi
224
# Gespeicherten Zeitstempel vorübergehend deaktivieren
225
if [ -f $Goobidata/$ID/$Job.timestamp ]
227
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "mv $Goobidata/$ID/$Job.timestamp $Goobidata/$ID/$Job.timestamp.bak"; fi
228
mv $Goobidata/$ID/$Job.timestamp $Goobidata/$ID/$Job.timestamp.bak
232
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Gespeicherter Zeitstempel $Goobidata/$ID/$Job.timestamp existiert nicht"; fi
235
if [ $Debug -eq 1 ]; then logger -p user.info -t $0 "Jobdefinition $JobDir/$Job/$ID existiert nicht"; fi