-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathks.reindex_haeppchenweise.sh
executable file
·144 lines (134 loc) · 6.5 KB
/
ks.reindex_haeppchenweise.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!/bin/bash
# Baut index.cdxj neu auf. Aber in Häppchen zu je 10 GB.
# Die einzelnen Teilindexe werden index01.cdxj, index02.cdxj, ... genannt; der letzte (< 10 GB) index.cdxj
# Hier: indexiert wpull-data, heritrix-data und cdn-data in der Lesesaal-Sammlung neu.
# *** ACHTUNG ! Während der des Neuaufbaus MUSS der auto-Indexer in der Crontab ausgeschaltet sein !!! ***
# +------------------+------------+-----------------------------------------+
# | Autor | Datum | Grund |
# +------------------+------------+-----------------------------------------+
# | Ingolf Kuss | 07.04.2022 | Neuanlage |
# +------------------+------------+-----------------------------------------+
coll=wayback
data_basedir=/data
happengroesse=10000000000 # Dateigröße in Byte
# happengroesse=2000000000 # Dateigröße in Byte
pywb_basedir=/opt/pywb
collections=$pywb_basedir/collections
collection=$collections/$coll
coll_archive=$collection/archive
logfile=$pywb_basedir/logs/ks.reindex_haeppchenweise.sh.log
next_happen_nummer=1
echo "********************************************************************************" >> $logfile
echo `date`
echo `date` >> $logfile
echo "BEGINN Häppchenweise Neuaufbau des index index.cdxj in der Sammlung $coll"
echo "BEGINN Häppchenweise Neuaufbau des index index.cdxj in der Sammlung $coll" >> $logfile
echo "Databasedir = $data_basedir" >> $logfile
echo "Häppchengröße = $happengroesse" >> $logfile
echo "********************************************************************************" >> $logfile
actdir=$PWD
# bash-Funktionen
function index_basedir {
# Indexiert alle Webarchivdateien eines Verzeichnisses (z.B. wpull-data/)
# in einem pywb-Archiv und einem pywb-Teilindex (indexNN.cdxj)
local dataverz=$1;
local suchmuster=$2;
# Schleife über alle im Datenverzeichnis angelegten WARC-Dateien
cd $dataverz
for warcfile in $suchmuster ; do
# echo "warcfile=$dataverz/$warcfile" >> $logfile
warcbase=`basename $warcfile`
# Gibt es schon einen gleichnamigen symbolischen Link im Archiv ?
if [ -f $coll_archive/$warcbase ]; then
# Archivfile (symbolischer Link) löschen
rm $coll_archive/$warcbase
fi
# Archivfile immer neu indexieren
echo "Warcfile=$dataverz/$warcfile wird hinzugefügt." >> $logfile
# Prüfen, ob der index index.cdxj schon größer als die Häppchengröße ist.
cd $collection/indexes
size=0
if [ -f "index.cdxj" ]; then
for word in `du -b index.cdxj`; do size=$word; break; done
fi
if [ $size -gt $happengroesse ]; then
# Index umbenennen nach printf("index%02d.cdxj", $next_happen_nummer)
printf -v newIndexName 'index%02d.cdxj' $next_happen_nummer
mv index.cdxj $newIndexName
echo "neu aufgebauten Teilindex umbenannt nach $newIndexName" >> $logfile
((next_happen_nummer++))
fi
cd $dataverz
# und neuen Index anfangen (das sollte von selber geschehen)
# WARC-Datei zu index.cdxj hinzufügen
/opt/pywb/bin/ks.index_warc.sh $coll $dataverz/$warcfile >> $logfile
done
}
# Aktuellen Index index.cdxj temporär umbenennen
cd $collection/indexes
index_cdxj_bak=""
# datetimestamp=`date +'%Y%m%d%H%M%S%3N'`
datetimestamp=`date +'%Y%m%d%H%M%S'`
if [ -f index.cdxj ]; then
index_cdxj_bak=index.$datetimestamp.cdxj
mv index.cdxj $index_cdxj_bak
echo "index.cdxj gab es schon; temporär umbenannt nach $index_cdxj_bak" >> $logfile
fi
# Auch alle aktuellen partiellen Indexe umbenennen
index_partial_bak=""
akt_partial_number=1;
printf -v index_partial 'index%02d.cdxj' $akt_partial_number
while [ -f $index_partial ]; do
printf -v index_partial_bak "index%02d.$datetimestamp.cdxj" $akt_partial_number
mv $index_partial $index_partial_bak
echo "$index_partial gab es schon; umbenannt nach $index_partial_bak." >> $logfile
((akt_partial_number++))
printf -v index_partial 'index%02d.cdxj' $akt_partial_number
done
((akt_partial_number--))
echo "$akt_partial_number Backup-Teilindexe angelegt." >> $logfile
# *******************************
# Beginn der Neuindexierung
# *******************************
# 1. wpull-data
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" >> $logfile
echo "START auto-indexing new wpull harvests" >> $logfile
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" >> $logfile
index_basedir $data_basedir/wpull-data "*:*/20*/*.warc.gz"
# 2. heritrix-data
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" >> $logfile
echo "START auto-indexing new heritrix harvests" >> $logfile
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" >> $logfile
index_basedir $data_basedir/heritrix-data "*:*/20*/warcs/*.warc.gz"
# 3. cdn-data
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" >> $logfile
echo "START auto-indexing new cdn harvests in restricted access collection" >> $logfile
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" >> $logfile
index_basedir $data_basedir/cdn-data "*:*/20*/*.warc.gz"
# Nach erfolgreicher Reindexierung:
# Umbenennung (und dadurch Deaktivierung) des gesicherten alten Indexes
if [ -n "$index_cdxj_bak" ]; then
mv $index_cdxj_bak index.cdxj.$datetimestamp
echo "Schon vorhandenen und umbenannten Index $index_cdxj_bak nach index.cdxj.$datetimestamp umbenannt und dadurch deaktiviert." >> $logfile
fi
# Auch alle alten Teilindexe umbenennen und dadurch Deaktivieren
index_partial_bak=""
akt_partial_number=1;
printf -v index_partial_bak "index%02d.$datetimestamp.cdxj" $akt_partial_number
while [ -f $index_partial_bak ]; do
printf -v index_partial_deakt "index%02d.cdxj.$datetimestamp" $akt_partial_number
mv $index_partial_bak $index_partial_deakt
echo "$index_partial_bak gab es schon; umbenannt nach $index_partial_deakt und dadurch deaktiviert." >> $logfile
((akt_partial_number++))
printf -v index_partial_bak "index%02d.$datetimestamp.cdxj" $akt_partial_number
done
((akt_partial_number--))
echo "$akt_partial_number Backup-Teilindexe deaktiviert." >> $logfile
echo "********************************************************************************" >> $logfile
echo `date`
echo `date` >> $logfile
echo "ENDE Reindexierung aller Webharvests häppchenweise, Sammlung $coll"
echo "ENDE Reindexierung aller Webharvests häppchenweise, Sammlung $coll" >> $logfile
echo "********************************************************************************" >> $logfile
cd $actdir
exit 0