| #!/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 | awk 'NR>1 {printf "<li>%d:%s</li>\n\n", $1,$2 } '` | |||||
| #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 |