#!/bin/bash function sync_library { echo "stop calibre service: 'service calibre-server stop' " /usr/sbin/service calibre-server stop #echo "wait for 1 sec to make sure calibre stopped" #sleep 1 #echo "force kill calibre server" #pkill -15 -u www-data -f "/opt/calibre/bin/calibre-server" echo "sync book data to lawipac.com/var/www/MyBooks" rsync -ah --delete /var/www/nextcloud/data/patrick/files/MyBooks/ /var/www/MyBooks/ echo "make sure www-data owns /var/www/MyBooks" chown www-data:www-data -R /var/www/MyBooks echo "check md5sum of metadb" CLOUD=`md5sum /var/www/nextcloud/data/patrick/files/MyBooks/metadata.db | awk '{print $1}'` WWW=`md5sum /var/www/MyBooks/metadata.db | awk '{print $1}'` echo "MD5 of Metadata.db CLOUD=$CLOUD WWW=$WWW " if [ $CLOUD != $WWW ]; then echo "MD5 mismatched after Sync !! ERROR =========="; #send email to sp@lawipac.com to inform the error email_failed else echo "successfully updated book library" email_success fi echo "service calibre-server start" #systemctl daemon-reload /usr/sbin/service calibre-server start } function email_failed { /usr/sbin/ssmtp -F "书库同步出错" sp@lawipac.com <<EOF Subject: Calibre Book Sync Failed From: 同步书库出错 <mailer@lawipac.com> To: sp@lawipac.com MIME-Version:1.0 Content-type: text/html; charset=utf-8 <p> 经过同步之后的 MD5 不匹配 !!!; </p> <p> 云:`md5sum /var/www/nextcloud/data/patrick/files/MyBooks/metadata.db`</p> <p> 书库:`md5sum /var/www/MyBooks/metadata.db`</p> <b> Please do not reply this email </b> Kind Regards < /br> lawipac </br> `date` </br> EOF } function email_success { BOOK_LIST=`calibredb list -s "date:>=1daysago" -ftitle --with-library=/var/www/MyBooks` #use cat to test locally #cat << EOF #send email using ssmtp /usr/sbin/ssmtp sp@lawipac.com << EOF Subject: 新书通知:Calibre Books updated From: 成长书库 <calibre-mailer-no-reply@lawipac.com> To: sp@lawipac.com MIME-Version:1.0 Content-type: text/html; charset=utf-8 <p align=center></u> 最近(昨天,今天)新增图书: </u> </p> <ul> $BOOK_LIST <ul> <h1 align=center> <a href="https://lawipac.com/books#library_id=MyBooks&panel=book_list"> 查看书库网页版 </a> </h1> EOF } function main () { echo "-----------------`date` -------------------------\n"; echo "check book library status ..." CLOUD=`md5sum /var/www/nextcloud/data/patrick/files/MyBooks/metadata.db | awk '{print $1}'` WWW=`md5sum /var/www/MyBooks/metadata.db | awk '{print $1}'` if [ $CLOUD != $WWW ]; then echo "MD5 MISMATCH update book library ..." sync_library else echo "(matched) skipping update" fi } main #email_success #email_failed