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