mirror of https://github.com/YGGverse/howtools.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.2 KiB
87 lines
2.2 KiB
#!/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 is 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!"
|
|
|