Merge branch 'tool_db-update-file-state'

This commit is contained in:
6543 2019-05-10 17:47:03 +02:00
commit 8d66415a65
2 changed files with 136 additions and 3 deletions

View File

@ -29,7 +29,7 @@ CREATE TABLE Universum (


CREATE TABLE Movie ( CREATE TABLE Movie (
ID INTEGER PRIMARY KEY AUTO_INCREMENT, ID INTEGER PRIMARY KEY AUTO_INCREMENT,
IMDb_ID INTEGER, IMDb_ID VARCHAR(100),
U_ID INTEGER, U_ID INTEGER,
Name VARCHAR(100), Name VARCHAR(100),
Description TEXT, Description TEXT,

133
tools/db/update-file-state Normal file
View File

@ -0,0 +1,133 @@
#!/bin/bash
# @author 6543
# @version 0.1
# @date 2019-02-07

## Options/Parameter
# [$1]: <path to movie folder>

{ #set enviroemnt
readonly TRUE=1 #like <stdbool.h>
readonly FALSE=0 #like <stdbool.h>
readonly TTSYNC_EXIST=0
readonly TTSYNC_BACKUP=1
readonly TTSYNC_REMOTE=2
readonly TTSYNC_DEL=3
readonly globalconf="/etc/tt/global"
}

{ #get options & args
readonly mode=$(echo $1 | tr -d '-')
moviedir="$1"
}

{ #db
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"

exit 0
}
[ "$mode" == "help" ] && help

###########################
## Programm Haupt Ablauf ##
###########################
function main() {
#cd to moviedir
cd "$moviedir"

## dateiliste erstellen die mit DB abgeglichen wird

## alle die keien DB.PATH eintrag haben -> file_add

## Für alle existierenden Dateien:
## * Path=DB.PATH && TTSync == TTSYNC_DEL
## -> DB.Size != 0 && Size == DB.Size -> TTSYNC_DEL -> TTSYNC_EXIST // >>file_undel<< konsider other state ?!?
## -> DB.Size != 0 || Size != DB.Size -> compare if md5 is same
## -> Ja -> TTSYNC_DEL -> TTSYNC_EXIST // >>file_undel<<
## -> NA -> delete DB Entry
## * Path=DB.PATH && TTSync == TTSYNC_EXIST / TTSYNC_BACKUP
## -> DB.Size = 0 -> file_add_size
## -> Size != DB.Size -> compare if md5 is same
## -> Ja -> update file size (file_add_size)
## -> NA
## -> makr DB.FID = TTSYNC_DEL
## -> file_add // this is a new file
## * Path=DB.PATH && TTSync == TTSYNC_REMOTE
## -> DB.Size = 0 -> compare if md5 is same
## -> Ja
## -> update file size (file_add_size)
## -> TTSYNC_REMOTE to TTSYNC_BACKUP
## -> NA
## -> Size = DB.Size TTSYNC_REMOTE to TTSYNC_BACKUP
## -> Size != DB.Size // Error Remote CP incorect!!!

## alle nicht gecheckten path einträge in DB (fiels die nicht existieren)
## A: HDD kaput
## B: Absichtlich gelöscht
## hdd_check // ob eine HDD defekt ist bzw das mounten irgendwo fehlgeschlagen ist
## -> ja -> error mesage!
## -> na -> set DB.FID TTSYNC_DEL

}

###########################
## help functions #########
###########################

##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
}
[ -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="/"

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
}

# file_size <path> -> (du -b)/1024 [Kb]
function file_size() {
echo $(($(du -b "$1" | cut -f 1)/1024))
}

# db_query <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
}

# db_F-ID_getPath <F-ID> -> <Path>
function db_id_getPath() {
db_query "SELECT CONCAT('$moviedir/', Folder, '/', Name) FROM File WHERE ID=$1;"
}



main #aufruf der main function (eig. programmstart)