clean up old MARC exports after a successful run
[sitka/sitka-tools.git] / marc_export_custom / mucn-full-export-parallel-ebsco-wrapper.sh
1 #!/bin/bash
2 # This is meant to be fire-and-forget
3 # Only use it if you trust the output!
4 export DIR=$(readlink -f $(dirname $0))
5 NAME=ebsco
6 if [ -z "${MAKEOPTS}" ]; then
7         echo "MAKEOPTS env variable is not set"
8         echo "If you really want this to be serialized, export MAKEOPTS=-j1"
9         echo "Otherwise set it about 1.5x your number of CPUs!"
10         exit 1
11 fi
12 [ -z "${T}" ] && export T=$(date -u +%Y%m%dT%H%M%SZ)
13 [ -z "${OUTDIR}" ] && export OUTDIR=$(mktemp --tmpdir -d ${NAME}_export.$T.XXXXXXX)
14 cd $OUTDIR
15 echo Prep $(date -uR)/@$(date +%s)
16 $DIR/fetch-shortcodes.sh shortcodes.csv
17 cd $DIR
18 echo Exporting $(date -uR)/@$(date +%s)
19 export PERLOPT=-X
20 time ./mucn-${NAME}-full-export-parallel.sh >$OUTDIR/script.log 2>&1
21 rc=$?
22 cd $OUTDIR
23 mkdir split
24 mv *-split* split/
25 echo Compressing $(date -uR)/@$(date +%s)
26 pbzip2 -9nk -p4 *{marc,log}
27 pbzip2 -9n -p4 split/*{marc,log}
28 echo Stats $(date -uR)/@$(date +%s)
29 DELETE=0 $DIR/stats.sh >$OUTDIR/stats.log 2>&1
30 # Look for zeros in the output marc
31 echo Sanity $(date -uR)/@$(date +%s)
32 egrep -vsq '^([[:space:]]*0){2}.*marc$' *stats
33 grep_result=$?
34 # halt if found
35 if [ $rc -ne 0 -o $grep_result -ne 0 ]; then
36         echo "Failed to run export! Human needed! export=$rc grep_sanity=$grep_result" 1>&2
37         cat *stats 1>&2
38         exit 1
39 fi
40 echo FTP $(date -uR)/@$(date +%s)
41 # Two passes with mget, so the stats and csv are always there first
42 # they are small and serve to show we might be uploading more, and they have
43 # checksums so AutoGraphics can check the upload
44 # EBSCO wants the raw .marc, they do not support any compression
45 FTPSITE=ftp://cat00975a:neJUJ4ez@ftp.epnet.com/
46 FTPDIR=full/mucn/$T
47 cat >lftp.cmd <<EOF
48 open $FTPSITE
49 mkdir -p $FTPDIR
50 cd $FTPDIR
51 mput *csv *stats
52 mput *bz2 *marc
53 rels -l
54 EOF
55 lftp -f lftp.cmd
56 echo Email $(date -uR)/@$(date +%s)
57 cp $DIR/email-template-${NAME}.sh $OUTDIR/
58 chmod +x email-template-${NAME}.sh
59 ./email-template-${NAME}.sh "$T" "@$(date +%s)" >email.txt
60 /usr/lib/sendmail -t -f sitka-tier2@bc.libraries.coop <email.txt
61
62 # log successful export and cleanup old exports, saving this one and the previous one
63 echo "$OUTDIR" >> $DIR/mucn_ebsco.log
64 head -n -2 $DIR/mucn_ebsco.log | while read OLDEXPORT ; do
65   [ -d "${OLDEXPORT}" ] && rm -rf "${OLDEXPORT}"
66 done