From eb0354cf87c7b1359c497ce8c9661ad4ab5d2314 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sat, 11 May 2019 01:38:31 +0200 Subject: [PATCH] beautysh tools/db/update-file-state --- tools/db/update-file-state | 230 ++++++++++++++++++------------------- 1 file changed, 115 insertions(+), 115 deletions(-) diff --git a/tools/db/update-file-state b/tools/db/update-file-state index a62099a..7edc73f 100644 --- a/tools/db/update-file-state +++ b/tools/db/update-file-state @@ -7,47 +7,47 @@ # [$1]: { #set enviroemnt - readonly TRUE=1 #like - readonly FALSE=0 #like - readonly TTSYNC_EXIST=0 #file exist local - readonly TTSYNC_BACKUP=1 #file exist local - backup exist - readonly TTSYNC_REMOTE=2 #file exists remote - not used jet - readonly TTSYNC_DEL=3 #local file deleted - readonly globalconf="/etc/tt/global" + readonly TRUE=1 #like + readonly FALSE=0 #like + readonly TTSYNC_EXIST=0 #file exist local + readonly TTSYNC_BACKUP=1 #file exist local - backup exist + readonly TTSYNC_REMOTE=2 #file exists remote - not used jet + readonly TTSYNC_DEL=3 #local file deleted + readonly globalconf="/etc/tt/global" } { #get options & args - readonly mode=$(echo $1 | tr -d '-') - moviedir="$1" - [ -z "$moviedir" ] && [ -f "$globalconf" ] && { # if (no argument) and (globalconf exist) - if [ -z "$(grep "moviedir=" "$globalconf" )" ]; then # and (moviedir is NOT in globalconf) - echo 'neither "movie folder" is set in global config nor given as argument' - exit 2 - else # and (moviedir is in globalconf) - moviedir="$(grep "moviedir=" "$globalconf" | cut -d '=' -f 2)" - fi - } - [ -d "$moviedir" ] || { echo "moviedir \"$moviedir\" do not exist"; exit 3; } # check moviedir - moviedir=""$(echo $moviedir | sed 's|/$||g')"" - [ -z "$moviedir" ] && exit 255 #catch case moviedir="/" - readonly DATE=$(date '+%Y-%m-%d') + readonly mode=$(echo $1 | tr -d '-') + moviedir="$1" + [ -z "$moviedir" ] && [ -f "$globalconf" ] && { # if (no argument) and (globalconf exist) + if [ -z "$(grep "moviedir=" "$globalconf" )" ]; then # and (moviedir is NOT in globalconf) + echo 'neither "movie folder" is set in global config nor given as argument' + exit 2 + else # and (moviedir is in globalconf) + moviedir="$(grep "moviedir=" "$globalconf" | cut -d '=' -f 2)" + fi + } + [ -d "$moviedir" ] || { echo "moviedir \"$moviedir\" do not exist"; exit 3; } # check moviedir + moviedir=""$(echo $moviedir | sed 's|/$||g')"" + [ -z "$moviedir" ] && exit 255 #catch case moviedir="/" + readonly DATE=$(date '+%Y-%m-%d') } { #db - dbname="tt_test" - dbhost="localhost" - dbuser="root" - dbpwd="" + dbname="tt_test" + dbhost="localhost" + dbuser="root" + dbpwd="" } function help() { - #help menue - echo "$0 is part of the TerabyteTerminator Project" - echo "" - echo "update-file-state [moviedir]" - echo " moviedir: Is optional if it is already in the global config" + #help menue + echo "$0 is part of the TerabyteTerminator Project" + echo "" + echo "update-file-state [moviedir]" + echo " moviedir: Is optional if it is already in the global config" - exit 0 + exit 0 } [ "$mode" == "help" ] && help @@ -55,67 +55,67 @@ function help() { ## Programm Haupt Ablauf ## ########################### function main() { - #cd to moviedir - cd "$moviedir" + #cd to moviedir + cd "$moviedir" - #clean DB from old stuff - { - db_query "DELETE From File WHERE Size=0 OR MD5="" OR MD5 IS NULL;" - } + #clean DB from old stuff + { + db_query "DELETE From File WHERE Size=0 OR MD5="" OR MD5 IS NULL;" + } - #erselle zwei dateilisten - list_tmp=$(mktemp -d) - db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE TTSync=$TTSYNC_EXIST OR TTSync=$TTSYNC_BACKUP;" > "$list_tmp/indb" - find "$moviedir" -type f > "$list_tmp/exist" + #erselle zwei dateilisten + list_tmp=$(mktemp -d) + db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE TTSync=$TTSYNC_EXIST OR TTSync=$TTSYNC_BACKUP;" > "$list_tmp/indb" + find "$moviedir" -type f > "$list_tmp/exist" - #find new files - grep -vf "$list_tmp/indb" "$list_tmp/exist" > "$list_tmp/new" + #find new files + grep -vf "$list_tmp/indb" "$list_tmp/exist" > "$list_tmp/new" - #all IDs wich an old check date: - db_query "SELECT ID FROM File Where TTCheck < '$DATE' OR TTCheck IS NULL;" | while read line; do - #for each ID with an old check date ... - ID=$line - TTSync=$(db_query "SELECT TTSync FROM File WHERE ID=$ID;") - FILE=$(db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$ID;") - if [ -f "$FILE"]; then - SIZE=$(db_query "SELECT Size FROM File WHERE ID=$ID;") - SIZE_new="$(file_size "$FILE")" - [ "$SIZE" != "$SIZE_new" ] && { - echo "FILE CHANGE: $FILE" - if [ "0" == "$SIZE_new" ]; then - #file exist but empty - #rm "$FILE" <- secure? 2check - db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;" - else - #recalc md5 ... + check - #update DB - MD5_new=$(md5sum "$FILE" | cut -c -32) - MD5=$(db_query "SELECT MD5 FROM File WHERE ID=$ID;") - - if [ "$MD5" == "$MD5_new" ]; then - db_query "UPDATE File SET Size=$SIZE_new,TTCheck=$DATE WHERE ID=$ID;" - else - #new file/file changed! - db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;" - file_add "$(db_query "SELECT CONCAT(Folder, '/', Name) FROM File WHERE ID=$ID;")" - fi + #all IDs wich an old check date: + db_query "SELECT ID FROM File Where TTCheck < '$DATE' OR TTCheck IS NULL;" | while read line; do + #for each ID with an old check date ... + ID=$line + TTSync=$(db_query "SELECT TTSync FROM File WHERE ID=$ID;") + FILE=$(db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$ID;") + if [ -f "$FILE"]; then + SIZE=$(db_query "SELECT Size FROM File WHERE ID=$ID;") + SIZE_new="$(file_size "$FILE")" + [ "$SIZE" != "$SIZE_new" ] && { + echo "FILE CHANGE: $FILE" + if [ "0" == "$SIZE_new" ]; then + #file exist but empty + #rm "$FILE" <- secure? 2check + db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;" + else + #recalc md5 ... + check + #update DB + MD5_new=$(md5sum "$FILE" | cut -c -32) + MD5=$(db_query "SELECT MD5 FROM File WHERE ID=$ID;") - fi - } -else - # file dont exist -db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;" -fi + if [ "$MD5" == "$MD5_new" ]; then + db_query "UPDATE File SET Size=$SIZE_new,TTCheck=$DATE WHERE ID=$ID;" + else + #new file/file changed! + db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;" + file_add "$(db_query "SELECT CONCAT(Folder, '/', Name) FROM File WHERE ID=$ID;")" + fi - done + fi + } + else + # file dont exist + db_query "UPDATE File SET TTSync=$TTSYNC_DEL,TTCheck=$DATE WHERE ID=$ID;" + fi -#add new files .... -cat "$list_tmp/new" | while read line; do - file_add "$line" -done + done + + #add new files .... + cat "$list_tmp/new" | while read line; do + file_add "$line" + done - rm -r "$list_tmp/" + rm -r "$list_tmp/" } @@ -125,12 +125,12 @@ done ##check & prepair args [ -z "$moviedir" ] && [ -f "$globalconf" ] && { # if (no argument) and (globalconf exist) - if [ -z "$(grep "moviedir=" "$globalconf" )" ]; then # and (moviedir is NOT in globalconf) - echo 'neither "movie folder" is set in global config nor given as argument' - exit 2 - else # and (moviedir is in globalconf) - moviedir="$(grep "moviedir=" "$globalconf" | cut -d '=' -f 2)" - fi + if [ -z "$(grep "moviedir=" "$globalconf" )" ]; then # and (moviedir is NOT in globalconf) + echo 'neither "movie folder" is set in global config nor given as argument' + exit 2 + else # and (moviedir is in globalconf) + moviedir="$(grep "moviedir=" "$globalconf" | cut -d '=' -f 2)" + fi } [ -d "$moviedir" ] || { echo "moviedir \"$moviedir\" do not exist"; exit 3; } # check moviedir moviedir=""$(echo $moviedir | sed 's|/$||g')"" @@ -139,47 +139,47 @@ moviedir=""$(echo $moviedir | sed 's|/$||g')"" # file_size -> (du -b)/1024 [Kb] function file_size() { - if [ -f "$1" ]; then - echo $(($(du -b "$1" | cut -f 1)/1024)) - else - echo 0 - fi + if [ -f "$1" ]; then + echo $(($(du -b "$1" | cut -f 1)/1024)) + else + echo 0 + fi } function file_add() { -echo 2DO -local relrevpath="$(echo $1 | 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)" + echo 2DO + local relrevpath="$(echo $1 | 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)" -local FILE="$moviedir/$(echo $relrevpath | rev)" -[ -f "$FILE" ] || return 1 #errer file not exist -local MD5_new=$(md5sum "$FILE" | cut -c -32) -local SIZE_new="$(file_size "$FILE")" + local FILE="$moviedir/$(echo $relrevpath | rev)" + [ -f "$FILE" ] || return 1 #errer file not exist + local MD5_new=$(md5sum "$FILE" | cut -c -32) + local SIZE_new="$(file_size "$FILE")" -#db path exist && md5 same -> update this entry -#db path exist && ttsync=exist/backup && md5 !same -> ttsync=del + new db entry -#or new db entry + #db path exist && md5 same -> update this entry + #db path exist && ttsync=exist/backup && md5 !same -> ttsync=del + new db entry + #or new db entry -#db entry is{ -# chek if size ->md5 exist -> update path&name (MV) -# else complete new entry -#} + #db entry is{ + # chek if size ->md5 exist -> update path&name (MV) + # else complete new entry + #} } # db_query -> result function db_query() { - local args="-sN" #no headers, no grid - args+=" -h$dbhost" - args+=" -u$dbuser" - [ -n "$dbpwd" ] && args+=" -p$dbpwd" - args+=" $dbname" - echo $@ | mysql $args + local args="-sN" #no headers, no grid + args+=" -h$dbhost" + args+=" -u$dbuser" + [ -n "$dbpwd" ] && args+=" -p$dbpwd" + args+=" $dbname" + echo $@ | mysql $args } # db_F-ID_getPath -> function db_id_getPath() { - db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$1;" + db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$1;" }