diff --git a/localdump.sh b/localdump.sh index 35028d095c5f9ef608c280797023c693a4f6f9da..6eef0473ad5fdcbeeb1518dd8e3df8b6a040b0e1 100755 --- a/localdump.sh +++ b/localdump.sh @@ -17,6 +17,7 @@ # 2022-03-17 ..... WIP: add lines with prefix __DB__ # 2022-11-04 ah rename hooks # 2024-03-14 ah v2.0: use profiles for local and remote databases +# 2024-03-18 ah fix for db detection from file and cli restore # ====================================================================== # --- variables: @@ -269,19 +270,20 @@ exit 1 ;; 1) - echo "INFO: No interaction on a single choice. Using '$_selection'" + echo "INFO: No interaction on a single choice. Using" + echo " $_selection" LASTINPUT="$_selection" return 0 ;; *) - echo "$_selection" - color.print input "${_prompt} >" - read -r LASTINPUT - if [ -z "$LASTINPUT" ]; then - echo "No input given. Aborting." - exit 1 - fi - ;; + echo "$_selection" + color.print input "${_prompt} >" + read -r LASTINPUT + if [ -z "$LASTINPUT" ]; then + echo "No input given. Aborting." + exit 1 + fi + ;; esac } @@ -569,8 +571,8 @@ EOH # if there is a single dump in backup folder: # '-rw-r--r-- 1 root root 481 Mar 13 12:27 ahcrawler__20240313-1227.sql.gz' # --> take the last part behind the last space to get a filename - grep "[rwxsSt\-]{10,} " <<< "$LASTINPUT" \ - && dbfile="$(rev <<< \'"$LASTINPUT"\' | cut -d ' ' -f 1 | rev)" + echo "$LASTINPUT" | grep -qE "^[rwxsSt\-]{10}" \ + && dbfile="$(rev <<< \'"$LASTINPUT"\' | cut -d ' ' -f 1 | rev | sed "s#'\$##" )" echo sTargetDb=$(guessDB ${dbfile}) @@ -595,9 +597,13 @@ EOH rc=$rc+1 else - PROFILENAME="${sDumpfile//${BACKUP_BASEDIR}/}" - PROFILENAME="$( echo $PROFILENAME | sed "s,^/*,," | cut -f 1 -d '/')" - + # We expect a structure: /somedir/whatever/<PROFILENAME>/<database>.gz + dumpDirname=$( dirname "${sDumpfile}" ) + PROFILENAME=$( basename "${dumpDirname}" ) + + echo "INFO: detected profile: $PROFILENAME" + echo "" + if dbdetect.setProfile "${PROFILENAME}"; then SERVICENAME=$( dbdetect.getType "$PROFILENAME" )