#!/bin/bash # Download latest howto database to destination directory # Features: # - check for valid SHA-256 # - skip download on remote data match local version (up to date) # ========================================================================= # Configuration # ========================================================================= ThisDir="/home/bdoku/howtools" DataDir="/home/bdoku/howto-db" RemoteHost="http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]" RemoteVersion=$(date -d "$date -1 days" +"%F")-23-30 RemoteDataURL="${RemoteHost}/howto-wiki_${RemoteVersion}.tar.gz" RemoteSHA256URL="${RemoteHost}/howto-wiki_${RemoteVersion}.tar.gz.sha-256" RemoteSHA256TMP="${ThisDir}/tmp/remote.sha-256" LocalSHA256TMP="${ThisDir}/tmp/local.sha-256" LocalDataTMP="${ThisDir}/tmp/data.tar.gz" # ========================================================================= # Compare versions # ========================================================================= # Get remote SHA-256 wget $RemoteSHA256URL -O $RemoteSHA256TMP # Remote SHA-256 valid RemoteSHA256=$(<$RemoteSHA256TMP) if ! [[ ${RemoteSHA256:0:64} =~ ^([0-9a-f]{64})$ ]]; then echo Invalid remote SHA-256 exit fi # Get local SHA-256 if [[ -f $LocalSHA256TMP ]]; then LocalSHA256=$(<$LocalSHA256TMP) else LocalSHA256="" fi # Compare versions if [[ ${LocalSHA256:0:64} == ${RemoteSHA256:0:64} ]]; then echo "DB up to date!" exit fi # ========================================================================= # SHA-256 versions mismatch, begin update # ========================================================================= echo "Begin update..." wget $RemoteDataURL -O $LocalDataTMP # Generate SHA-256 sha256sum $LocalDataTMP > $LocalSHA256TMP if [[ -f $LocalSHA256TMP ]]; then LocalSHA256=$(<$LocalSHA256TMP) else LocalSHA256="" fi # Check for download contain valid SHA-256 if ! [[ ${LocalSHA256:0:64} =~ ^([0-9a-f]{64})$ ]]; then echo Invalid local SHA-256 exit fi # Check for download match remote SHA-256 if ! [[ ${LocalSHA256:0:64} == ${RemoteSHA256:0:64} ]]; then echo "SHA-256 mismatch!" exit fi # Begin update echo "Unpack downloaded data to destination..." tar -xvf $LocalDataTMP -C $DataDir echo "Update completed!"