#!/bin/bash # @author 6543 # @version 1.0 # @date 2019-05-11 ## Options/Parameter # $1: # -a | add files of md5-file to db # -r | remove files of md5-file from db # -d | mark files from md5-file ad deleted # -ee | export md5 of existing files # -ed | export md5 of deleted fiels # # $2: # [$3]: #load functions from LIB if [ -f "$(readlink -f "$(dirname $0)/bash-lib")" ]; then source "$(readlink -f "$(dirname $0)/bash-lib")" [ $DEBUG == $TRUE ] && echo "LIB VERSION: $LIBVER" >&2 elif [ -f "/bash-lib" ]; then # source "/bash-lib" [ $DEBUG == $TRUE ] && echo "LIB VERSION: $LIBVER" >&2 else echo "ERROR: Global Lib not found" exit 255 fi { #get options & args readonly mode=$(echo $1 | tr -d '-') readonly md5list="$2" [ -n "$3" ] && [ -d "$3" ] && moviedir="$3" #load config (DB,...) config_load } # help function [ "$mode" == "help" ] && { #help menue echo "$0 is part of the TerabyteTerminator Project" echo "" echo "import-md5-list [moviedir]" echo " modes:" echo " -a add files of md5-file to db" echo " -r remove files of md5-file from db" echo " -d mark files from md5-file ad deleted" echo " -ee export md5 of existing files" echo " -ed export md5 of deleted fiels" echo "" echo " moviedir: Is optional if it is already in the global config" exit 0 } ## Checks [ "${mode:0:1}" == "e" ] && touch "$md5list" || { echo "ERROR: cant creat MD5 File on this PLACE" exit 1 } # check if md5 file exist [ -f "$md5list" ] || { echo "md5list \"$md5list\" do not exist" exit 1 } ## functions function md5_in_add() { cat $md5list | while read line; do #for each line in md5 local md5=$(echo $line | cut -c -32) local path=$(echo $line | cut -c 33- | sed 's/^\ //g') local relrevpath=$(echo $path | sed "s|^$moviedir||g" | sed 's|^/||g' | sed 's|/$||g' | rev | sed "s/'/''/g") #last statement set ' as '' so it wont have an evect in the sql statement local name=$(echo $relrevpath | cut -d '/' -f 1 | rev) local folder=$(echo $relrevpath | cut -d '/' -f 2- | rev) if [ "$(db_query "SELECT COUNT(ID) FROM File WHERE MD5='$md5' AND Folder='$folder' AND Name='$name';")" == "0" ]; then #wenn KEIN gleicher Eintrag Vorhanden db_query "INSERT INTO File (MD5, Folder, Name, TTSync) VALUES ('$md5', '$folder', '$name', $TTSYNC_EXIST );" else db_query "UPDATE File SET TTSync=$TTSYNC_EXIST WHERE MD5='$md5' AND Folder='$folder' AND Name='$name';" fi #filesize .. [ -f "$moviedir/$folder/$name" ] && db_query "UPDATE File SET Size=$(file_size "$moviedir/$folder/$name") WHERE MD5='$md5' AND Folder='$folder' AND Name='$name';" done exit 0 } function md5_rm() { cat $md5list | while read line; do #for each line in md5 local md5=$(echo $line | cut -c -32) local path=$(echo $line | cut -c 33- | sed 's/^\ //g') local relrevpath=$(echo $path | sed "s|^$moviedir||g" | sed 's|^/||g' | sed 's|/$||g' | rev | sed "s/'/''/g") #last statement set ' as '' so it wont have an evect in the sql statement local name=$(echo $relrevpath | cut -d '/' -f 1 | rev) local folder=$(echo $relrevpath | cut -d '/' -f 2- | rev) db_query "DELETE FROM File WHERE MD5='$md5' AND Folder='$folder' AND Name='$name';" done exit 0 } function md5_in_del() { cat $md5list | while read line; do #for each line in md5 local md5=$(echo $line | cut -c -32) local path=$(echo $line | cut -c 33- | sed 's/^\ //g') local relrevpath=$(echo $path | sed "s|^$moviedir||g" | sed 's|^/||g' | sed 's|/$||g' | rev | sed "s/'/''/g") #last statement set ' as '' so it wont have an evect in the sql statement local name=$(echo $relrevpath | cut -d '/' -f 1 | rev) local folder=$(echo $relrevpath | cut -d '/' -f 2- | rev) if [ "$(db_query "SELECT COUNT(ID) FROM File WHERE MD5='$md5' AND Folder='$folder' AND Name='$name';")" -gt "0" ]; then #wenn gleicher Eintrag Vorhanden db_query "UPDATE File SET TTSync=$TTSYNC_DEL WHERE MD5='$md5' AND Folder='$folder' AND Name='$name';" else #Ansonsten Erstelle Del eintrag db_query "INSERT INTO File (MD5, Folder, Name, TTSync) VALUES ('$md5', '$folder', '$name', $TTSYNC_DEL );" fi done exit 0 } function md5_out_exist() { db_query "SELECT CONCAT(MD5, ' ', ' ' ,'$moviedir/', Folder, '/', Name) FROM File WHERE TTSync=$TTSYNC_EXIST OR TTSync=$TTSYNC_BACKUP;" >> $md5list exit 0 } function md5_out_del() { db_query "SELECT CONCAT(MD5, ' ', ' ' ,'$moviedir/', Folder, '/', Name) FROM File WHERE TTSync=$TTSYNC_DEL;" >> $md5list exit 0 } #all loaded stat now case "$mode" in "a") #in_add md5_in_add ;; "r") #rm md5_rm ;; "d") md5_in_del ;; "ee" | "e" ) md5_out_exist ;; "ed" ) md5_out_del ;; *) echo "wrong arguments" echo "" help ;; esac