Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
iml-backup
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
IML Open Source
iml-backup
Commits
5faf555a
Commit
5faf555a
authored
1 year ago
by
Hahn Axel (hahn)
Browse files
Options
Downloads
Patches
Plain Diff
update restore process
parent
11220b73
No related branches found
No related tags found
1 merge request
!129
Db Profiles
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
localdump.sh
+118
-106
118 additions, 106 deletions
localdump.sh
with
118 additions
and
106 deletions
localdump.sh
+
118
−
106
View file @
5faf555a
...
...
@@ -39,14 +39,8 @@
.
$(
dirname
$0
)
/includes/dbdetect.class.sh
||
exit
1
# if [ -r ~/.backup.conf ]; then
# . ~/.backup.conf
# fi
if
[
!
-r
"
${
JOBFILE
}
"
]
;
then
color error
echo
ERROR: missing config file
${
JOBFILE
}
.
color reset
color.echo error
"ERROR: missing config file
${
JOBFILE
}
."
exit
1
fi
...
...
@@ -79,7 +73,7 @@
gzip
-9
-f
"
${
_outfile
}
"
fetchrc
else
cecho error
"ERROR occured while dumping - no gzip of
$_outfile
"
c
olor.
echo error
"ERROR occured while dumping - no gzip of
$_outfile
"
fi
# echo -n "__DB__$SERVICENAME INFO: backup to "
# ls -l "$_outfile"* 2>&1
...
...
@@ -98,9 +92,9 @@
h3
"CLEANUP
${
BACKUP_TARGETDIR
}
older
$BACKUP_KEEP_DAYS
days ..."
echo
find
"
${
BACKUP_TARGETDIR
}
"
-mtime
+
$BACKUP_KEEP_DAYS
-delete
-print
color cmd
color
.preset
cmd
find
"
${
BACKUP_TARGETDIR
}
"
-mtime
+
$BACKUP_KEEP_DAYS
-delete
-print
color
reset
color
.
reset
if
[
$(
find
"
${
BACKUP_TARGETDIR
}
"
-type
f |
wc
-l
)
-eq
0
]
;
then
echo
"INFO: the directory is empty - deleting it"
...
...
@@ -125,9 +119,7 @@
function
create_targetdir
(){
mkdir
-p
"
${
BACKUP_TARGETDIR
}
"
2>/dev/null
if
[
!
-d
"
${
BACKUP_TARGETDIR
}
"
]
;
then
color error
echo
FATAL ERROR: directory
${
BACKUP_TARGETDIR
}
was not created
color reset
color.echo
"error"
"FATAL ERROR: directory
${
BACKUP_TARGETDIR
}
was not created"
exit
1
fi
}
...
...
@@ -154,23 +146,17 @@
# ------------------------------------------------------------
# get a list of existing dumper scripts
function
get_services
(){
#
# ls -1 ${BACKUP_PLUGINDIR}/*.sh | sed "s#${BACKUP_PLUGINDIR}/##" | sed "s#\.sh##" | sort
for
config
in
$(
dbdetect.getConfigs
)
;
do
if
dbdetect.exists
$config
;
then
echo
"
$(
dbdetect.getProfile
$config
)
"
fi
done
}
# ------------------------------------------------------------
# show directory infos with count of files and used space
# show used space and count of files and dirs
function
show_info_backup_target
(){
if
[
-d
"
${
BACKUP_TARGETDIR
}
"
]
;
then
h3
"INFO about backup target
${
BACKUP_TARGETDIR
}
"
...
...
@@ -193,6 +179,12 @@
# FUNCTIONS 4 RESTORE
# ----------------------------------------------------------------------
# ------------------------------------------------------------
# restore: show profiles from that exist backups
# global string BACKUP_BASEDIR base directory of all backups
function
listBackupedServices
(){
find
"
${
BACKUP_BASEDIR
}
"
-mindepth
1
-maxdepth
1
-type
d |
sed
"s#^
${
BACKUP_BASEDIR
}
/##g"
|
sort
}
# ------------------------------------------------------------
# restore: show databases that can be restored
...
...
@@ -207,16 +199,14 @@
fi
cd
-
>
/dev/null
else
color error
echo
ERROR:
${
BACKUP_TARGETDIR
}
does not exist - here are no backups to restore.
color reset
color.echo error
"ERROR:
${
BACKUP_TARGETDIR
}
does not exist - here are no backups to restore."
echo
echo
You can try to restore dumps:
echo
"
You can try to restore dumps:
"
echo
"1) Restore dump files from a backup set"
echo
"
`
dirname
$0
`
/restore.sh
$BACKUP_BASEDIR
"
echo
"
$(
dirname
$0
)
/restore.sh
$BACKUP_BASEDIR
"
echo
"2) Copy restored dumps into
$BACKUP_TARGETDIR
"
echo
"3) Start database restore again"
echo
"
`
dirname
$0
`
/localdump.sh restore [service]"
echo
"
$(
dirname
$0
)
/localdump.sh restore [service]"
echo
exit
1
...
...
@@ -238,9 +228,7 @@
sBasename
=
$(
basename
$1
)
sDb
=
$(
echo
${
sBasename
}
|
sed
"s#__[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9].*##g"
)
if
[
-z
$sDb
]
;
then
color error
echo
ERROR: db name was not detected from file
$1
color reset
color.echo error
"ERROR: db name was not detected from file
$1
"
exit
1
fi
echo
$sDb
...
...
@@ -290,8 +278,7 @@
echo
" -h|--help show this help"
echo
echo
"PARAMETERS:"
echo
" operation - one of check|backup|restore; optional parameter; default is"
echo
" 'backup'."
echo
" operation - one of check|backup|restore; optional parameter"
echo
" backup dump all databases/ schemes of a given service"
echo
" check show info only if the service is available"
echo
" restore import a dump into same or new database"
...
...
@@ -302,8 +289,22 @@
echo
" file - filename of db dump to restore to origin database scheme"
echo
echo
"EXAMPLES:"
echo
"
$_self
backup [Name_of_service]"
echo
"
$_self
restore [Name_of_service] [[file-to-restore]]"
echo
"
$_self
backup"
echo
"
$_self
backup ALL"
echo
" Backup all databases of all found services"
echo
echo
"
$_self
backup mysql"
echo
" Backup all Mysql databases."
echo
echo
"
$_self
restore"
echo
" Start interactive restore of a database of any service."
echo
echo
"
$_self
restore sqlite"
echo
" Start interactive restore of an sqlite database."
echo
echo
"
$_self
restore <file-to-restore> [<database-name>]"
echo
" Restore a given dump file to the origin database scheme or"
echo
" to a new/ other database with the given name."
}
...
...
@@ -320,7 +321,7 @@
;;
esac
;
done
mode
=
"
backup
"
mode
=
""
case
"
$1
"
in
backup|check|restore|shell
)
mode
=
$1
...
...
@@ -329,9 +330,7 @@
esac
if
[
-z
"
$mode
"
]
;
then
color error
echo
"ERROR: missing parameter."
color reset
color.echo error
"ERROR: missing parameter for operation."
echo
showhelp
echo
...
...
@@ -343,14 +342,12 @@
# ----- db init
BACKUP_BASEDIR
=
$(
_j_getvar
${
JOBFILE
}
"dir-localdumps"
)
BACKUP_BASEDIR
=
$(
_j_getvar
"
${
JOBFILE
}
"
"dir-localdumps"
)
# check
if
[
-z
"
$BACKUP_BASEDIR
"
]
;
then
color error
echo
ERROR: missing config
for
backup target.
color.echo error
"ERROR: missing config for backup target."
echo
There must be an entry dir-localdumps
in
${
JOBFILE
}
color reset
exit
1
fi
BACKUP_PLUGINDIR
=
$(
dirname
$0
)
/plugins/localdump
...
...
@@ -370,11 +367,10 @@
h1
$(
date
)
IML BACKUP :: LOCALDUMP ::
$*
echo
"mode =
$mode
"
export
SERVICENAME
=
$1
BACKUP_TARGETDIR
=
${
BACKUP_BASEDIR
}
/
${
SERVICENAME
}
BACKUP_SCRIPT
=
$(
get_service_script
${
SERVICENAME
}
)
#
BACKUP_TARGETDIR=${BACKUP_BASEDIR}/${SERVICENAME}
#
BACKUP_SCRIPT=$( get_service_script ${SERVICENAME} )
case
"
$mode
"
in
# ------------------------------------------------------------
...
...
@@ -390,7 +386,7 @@
;;
# ------------------------------------------------------------
backup
)
if
[
"
$
SERVICENAME
"
=
"ALL
"
]
;
then
if
[
"
$
1
"
=
"ALL"
]
||
[
-z
"
$1
"
]
;
then
services
=
$(
get_services
)
echo
AUTO: calling
local
backup scripts
for
all known services
...
...
@@ -453,31 +449,55 @@
restore
)
h1
"RESTORE DATABASE"
if
[
-z
$2
]
;
then
if
[
-z
$1
]
||
[
!
-f
"
$1
"
]
;
then
parService
=
"
$1
"
# ----- interactive selections
h2
"Select profile that has a dump"
if
[
-z
"
${
parService
}
"
]
;
then
listBackupedServices
color.print input
"Restore for profile name >"
read
-r
parService
test
-z
"
$parService
"
&&
exit
1
else
echo
"Taken from command line:
$parService
"
fi
# ----- check if profile exists
if
!
dbdetect.setProfile
"
${
parService
}
"
;
then
color.echo error
"ERROR: profile [
${
parService
}
] is not known here (or database service is stopped)."
echo
echo
"Existing services:"
get_services
exit
1
fi
if
[
!
-d
"
${
BACKUP_BASEDIR
}
/
${
parService
}
"
]
;
then
color.echo error
"ERROR: profile
${
parService
}
has no backup yet."
exit
1
fi
# ----- file selection
BACKUP_TARGETDIR
=
"
${
BACKUP_BASEDIR
}
/
${
parService
}
"
h2
"
s
elect database"
h2
"
S
elect database"
listBackupedDBs
color input
echo
-n
"name of db to restore >"
color reset
read
fileprefix
color.print input
"name of db to restore >"
read
-r
fileprefix
test
-z
"
$fileprefix
"
&&
exit
1
echo
h2
"
s
elect a specific dump for that database"
h2
"
S
elect a specific dump for that database"
listBackupedDBs
$fileprefix
color input
echo
-n
"backupset to import >"
color reset
read
dbfile
color.print input
"backupset to import >"
read
-r
dbfile
test
-z
"
$dbfile
"
&&
exit
1
echo
color input
sTargetDb
=
$(
guessDB
${
dbfile
}
)
echo
-n
"new database name [
$sTargetDb
] >"
color reset
read
sTargetDb
color.print input
"New database name [
$sTargetDb
] >"
read
-r
sTargetDb
if
[
-z
$sTargetDb
]
;
then
sTargetDb
=
$(
guessDB
${
dbfile
}
)
fi
...
...
@@ -485,17 +505,15 @@
sDumpfile
=
"
${
BACKUP_TARGETDIR
}
/
${
dbfile
}
"
else
sDumpfile
=
$
2
sTargetDb
=
$
3
sDumpfile
=
$
1
sTargetDb
=
$
2
fi
shift
2
# ----- start restore
if
[
!
-f
"
${
sDumpfile
}
"
]
;
then
color error
echo
ERROR:
${
sDumpfile
}
is not a file
color reset
color.echo error
"ERROR: [
${
sDumpfile
}
] is not a file"
rc
=
$rc
+1
else
...
...
@@ -510,61 +528,55 @@
BACKUP_SCRIPT
=
$(
get_service_script
${
SERVICENAME
}
)
BACKUP_PARAMS
=
$(
dbdetect.getParams
)
# ------ set env
eval
$(
dbdetect.setenv
)
.
$BACKUP_SCRIPT
$mode
"
${
sDumpfile
}
"
"
${
sTargetDb
}
"
if
[
$?
-ne
0
-o
$rc
-ne
0
]
;
then
color error
echo
ERROR:
$mode
failed. See ouput above. :-/
color reset
color.echo error
"ERROR:
$mode
failed. See ouput above. :-/"
else
color ok
echo
OK,
$mode
was successful.
color reset
color.echo ok
"OK,
$mode
was successful."
fi
# ------ unset env
eval
$(
dbdetect.unssetenv
)
else
color error
echo
"ERROR: Profile
$PROFILENAME
was detected but its database service is not available."
color.reset
color.echo error
"ERROR: Profile
$PROFILENAME
was detected but its database service is not available."
fi
fi
;;
# ------------------------------------------------------------
shell
)
#
shell)
export
BACKUP_TARGETDIR
.
$BACKUP_SCRIPT
(
mycmd
=
echo
echo
"Starting interactive shell..."
echo
echo
"STATUS: STILL ALPHA as long existing db plugins are not rewritten."
echo
echo
"INFO: Try
${
SERVICENAME
}
.help to see database specific commands."
echo
"INFO: Type exit and return to leave the shell."
echo
while
[
!
"
$mycmd
"
=
"exit"
]
;
do
echo
-n
"[
${
SERVICENAME
}
]"
color input
echo
-n
"
$(
pwd
)
"
color reset
echo
-n
" % "
read
-r
mycmd
if
[
!
"
$mycmd
"
=
"exit"
]
;
then
color cmd
eval
$mycmd
color reset
fi
done
)
# export BACKUP_TARGETDIR
# . $BACKUP_SCRIPT
# (
# mycmd=
# echo
# echo "Starting interactive shell..."
# echo
# echo "STATUS: STILL ALPHA as long existing db plugins are not rewritten."
# echo
# echo "INFO: Try ${SERVICENAME}.help to see database specific commands."
# echo "INFO: Type exit and return to leave the shell."
# echo
# while [ ! "$mycmd" = "exit" ]; do
# echo -n "[${SERVICENAME}]"
# color.print input " $( pwd )"
# echo -n " % "
# read -r mycmd
# if [ ! "$mycmd" = "exit" ];then
# color.preset cmd
# eval $mycmd
# color.reset
# fi
# done
# )
# ;;
# ----- start restore
*
)
color.echo error
"ERROR: unknown command [
$mode
]"
;;
esac
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment