[IMPROVED] profile_restore.sh permite restaurar copias de seguridad
- Se corrigió que se incluyerá correctamente .gitconfig .gnugp .ssh - Otras correcciones menores
This commit is contained in:
parent
8186e6612f
commit
120d112a70
5 changed files with 251 additions and 25 deletions
10
README.md
10
README.md
|
@ -63,4 +63,12 @@ Para realizar una copia de seguridad de sus configuraciones de desarrollador que
|
|||
$ cd $HOME/devs
|
||||
$ bin/profile_backup.sh
|
||||
|
||||
Nota: Solo utilice está función si realiza cambios a su configuración GIT, GPG o SSH.
|
||||
Nota: Solo utilice está función si realiza cambios a su configuración GIT, GPG o SSH. Esto creará un archivo zip en la carpeta $HOME/secure/backups (por defecto). En la carpeta de backups podrán existir múltiples archivo zip (uno por cada vez que se realizó un backup) y deberá un archivo gpg.secret que contedrá la contraseña encriptada para restaurar el backup. Si pierde o elimina el archivo de secretos la restauración no podrá ser realizada. El archivo de secretos solo será creado si no existe. Su contenido no debe ser modificado. Procuré no tener archivos ZIP que no correspondan a la contraseña vigente; ya que estos no podrán ser restaurados.
|
||||
|
||||
#### Restaurando configuraciones del perfil del desarrollador
|
||||
|
||||
Para poder restaurar el perfil de desarrollador de una copia de seguridad realice las siguientes operaciones:
|
||||
|
||||
$ cd $HOME/devs
|
||||
$ bin/profile_restore.sh
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ function gpg_backup_token() {
|
|||
}
|
||||
|
||||
# FULL EXTENDED GNUGP BACKUP
|
||||
function gpg_backup() {
|
||||
function developer_backup() {
|
||||
|
||||
local DB_BACKUP=$1
|
||||
local BIN_CONFIG=$2
|
||||
|
@ -161,7 +161,7 @@ function gpg_backup() {
|
|||
# Copy full .gnugp for backup
|
||||
mkdir ${TMP_PATH}/.gnugp
|
||||
if [ $? -eq 0 ]; then
|
||||
cp -rf $GNUGP_PATH/* ${TMP_PATH}/.gnugp
|
||||
cp -rf $GNUGP_PATH/* ${TMP_PATH}/.gnugp/
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ]
|
||||
then
|
||||
|
@ -173,7 +173,7 @@ function gpg_backup() {
|
|||
# Copy full .ssh for backup
|
||||
mkdir ${TMP_PATH}/.ssh
|
||||
if [ $? -eq 0 ]; then
|
||||
cp -rf $HOME/.ssh/* ${TMP_PATH}/.ssh
|
||||
cp -rf $HOME/.ssh/* ${TMP_PATH}/.ssh/
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ]
|
||||
then
|
||||
|
@ -198,7 +198,7 @@ function gpg_backup() {
|
|||
|
||||
# Comprimir el archivo de respaldo en un archivo ZIP protegido con contraseña
|
||||
BACKUP_FILE="${LOCAL_BACKUP}/gpg_${USER}_${TIMESTAMP}"
|
||||
zip -r -P "${ZPASSWORD}" $BACKUP_FILE *
|
||||
zip -qqr -P "${ZPASSWORD}" $BACKUP_FILE * .gnugp .ssh .gitconfig
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ]
|
||||
then
|
||||
|
@ -211,8 +211,8 @@ function gpg_backup() {
|
|||
|
||||
}
|
||||
|
||||
# RESTORE .GNUGP PATH
|
||||
function gpg_restore() {
|
||||
# RESTORE PROFILE DEVELOPER LOCAL BACKUP
|
||||
function developer_restore() {
|
||||
|
||||
local BIN_CONFIG=$1
|
||||
local BACKUP_ZIP=$2
|
||||
|
@ -231,26 +231,36 @@ function gpg_restore() {
|
|||
fi
|
||||
|
||||
# Check if backup configuration file exists
|
||||
if [ ! -f $BIN_CONFIG/$GPG_BACKUP_CFG ]
|
||||
local LOCAL_BACKUP=$(dirname $BACKUP_ZIP)
|
||||
if [ ! -f $LOCAL_BACKUP/$GPGP_BACKUP_SECRET ]
|
||||
then
|
||||
return 12
|
||||
fi
|
||||
|
||||
local LOCAL_BACKUP=$HOME/$(cat < $BIN_CONFIG/$GPG_BACKUP_CFG)
|
||||
|
||||
# Check if backup path exist
|
||||
if [ -z "$LOCAL_BACKUP" ]; then
|
||||
return 13
|
||||
fi
|
||||
|
||||
# Get secret backup
|
||||
ZPASSWORD=$(echo "$(cat < "${LOCAL_BACKUP}/$GPGP_BACKUP_SECRET")" | base64 -d)
|
||||
if [ -z "${ZPASSWORD}" ]; then
|
||||
return 14
|
||||
fi
|
||||
|
||||
# Restore unzip full .gnugp path
|
||||
unzip -qqo -P "$ZPASSWORD" "$BACKUP_ZIP" ".gnugp/*" -d $HOME
|
||||
clear
|
||||
|
||||
# Restore zip full .gnugp path
|
||||
unzip -qqo -P "$ZPASSWORD" "$BACKUP_ZIP" ".gnugp"/* -d $HOME
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ]; then
|
||||
return $rc
|
||||
fi
|
||||
|
||||
# Restore zip full .ssh path
|
||||
unzip -qqo -P "$ZPASSWORD" "$BACKUP_ZIP" ".ssh"/* -d $HOME
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ]; then
|
||||
return $rc
|
||||
fi
|
||||
|
||||
# Restore zip full .gitconfig file
|
||||
unzip -qqo -P "$ZPASSWORD" "$BACKUP_ZIP" ".gitconfig" -d $HOME
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ]; then
|
||||
return $rc
|
||||
|
|
|
@ -13,17 +13,30 @@
|
|||
|
||||
|
||||
gpmsg_000="INICIALIZAR GPG"
|
||||
gpmsg_001="BACKUP GPG"
|
||||
gpmsg_001="RESTAURAR BACKUP DE PERFIL"
|
||||
|
||||
gpmsg_101="Desea inicializar la configuración de GPG?"
|
||||
gpmsg_102="Inicialización de configuración GPG completada!"
|
||||
gpmsg_102="Configuración GPG inicializada!"
|
||||
gpmsg_103="Plantilla de configuración GPG no existe!"
|
||||
gpmsg_104="Desea realizar una copia de seguridad de GPG?"
|
||||
gpmsg_105="Desea realizar copia de seguridad de las claves GPG?"
|
||||
gpmsg_104="Desea realizar una copia de seguridad GPG?"
|
||||
gpmsg_105="Desea realizar copia de seguridad para el desarrollador"
|
||||
gpmsg_106="Copia de seguridad de claves GPG completada!"
|
||||
gpmsg_107="Archivo de configuración GPG no fue encontrado!"
|
||||
gpmsg_108="Carpeta de copia de seguridad local no existe"
|
||||
gpmsg_109="Contraseña para encriptación del archivo ZIP no fue suministrada"
|
||||
gpmsg_109="Contraseña del archivo ZIP no fue suministrada"
|
||||
gpmsg_110="Base de Datos SQLITE3 no fue suministrada"
|
||||
gpmsg_111="Archivo de Base de Datos SQLITE3 no existe!"
|
||||
gpmsg_112="Carpeta temporal de Backup no fue suministrada"
|
||||
gpmsg_113="Desea restaurar la copia de seguridad"
|
||||
gpmsg_114="Restauración de copia de seguridad completada satisfactoriamente!"
|
||||
|
||||
dvmsg_101_0="Versión"
|
||||
dvmsg_101_1="Uso:"
|
||||
dvmsg_101_2="<developer zipfile> [--help] [--version]"
|
||||
dvmsg_102="Descripción: Este bash script restaura una copia de seguridad de perfil de desarrollador"
|
||||
dvmsg_103=" donde <developer zipfile> es argumento obligatorio y corresponde a la copia"
|
||||
dvmsg_104=" de seguridad en formato zip."
|
||||
dvmsg_105="Opciones:"
|
||||
dvmsg_106=" --help Muestra este mensaje de ayuda."
|
||||
dvmsg_107=" --version Muestra la versión del script."
|
||||
|
||||
|
|
|
@ -78,11 +78,11 @@ if [ $? -ne 0 ]; then
|
|||
exit 9
|
||||
fi
|
||||
|
||||
# Backup de claves GPG
|
||||
dialog_yesno "${gpmsg_105}"
|
||||
# Profile DEveloper Backup
|
||||
dialog_yesno "${gpmsg_105} $USER?"
|
||||
case ${result} in
|
||||
0)
|
||||
gpg_backup "$DB_GPG_PATH/$DB_GPG_FILE" "$BIN_HOME/$GPG_CONFIG_PATH" "$DATEBAK" "$GPG_DEFAULT_PATH"
|
||||
developer_backup "$DB_GPG_PATH/$DB_GPG_FILE" "$BIN_HOME/$GPG_CONFIG_PATH" "$DATEBAK" "$GPG_DEFAULT_PATH"
|
||||
rc=$?
|
||||
case $rc in
|
||||
0)
|
||||
|
|
195
bin/profile_restore.sh
Executable file
195
bin/profile_restore.sh
Executable file
|
@ -0,0 +1,195 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# profile_restore.sh
|
||||
# Modified: 2024/12/15 14:27:00
|
||||
# Derechos de Autor (C) [2024] [Mauro Rosero P. <mauro@roser.one>]
|
||||
#
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
|
||||
# o (a su elección) cualquier versión posterior.
|
||||
#
|
||||
# Este programa se distribuye con la esperanza de que sea útil,
|
||||
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
|
||||
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
|
||||
# Licencia Pública Affero General de GNU para obtener más detalles.
|
||||
#
|
||||
# Debería haber recibido una copia de la Licencia Pública Affero General
|
||||
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
|
||||
|
||||
DEVSPATH=devs
|
||||
BIN_HOME=$HOME/$DEVSPATH
|
||||
BIN_MESG=bin/msg
|
||||
BIN_LIBS=bin/lib
|
||||
VERSION=0.98.0
|
||||
|
||||
# CHECK SHELL LANGUAGE
|
||||
BIN_LANG=${LANG:0:2}
|
||||
|
||||
# LOAD BASE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/base.lib
|
||||
#baselib_test
|
||||
|
||||
# LOAD CONSOLE BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/console.lib
|
||||
#consolelib_test
|
||||
|
||||
# LOAD SQLITE3 BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/sqlite.lib
|
||||
#sqlitelib_test
|
||||
|
||||
# LOAD DEVELOPERS BASH LIBRARY
|
||||
source $BIN_HOME/$BIN_LIBS/developers.lib
|
||||
#gpglib_test
|
||||
|
||||
# Load head messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head"
|
||||
|
||||
# Load developers messages
|
||||
load_messages $BIN_HOME $BIN_MESG $BIN_LANG "developers"
|
||||
|
||||
# Function to display help message
|
||||
function help() {
|
||||
echo "$dvmsg_101_1 $0 $dvmsg_101_2"
|
||||
echo "$dvmsg_101_0 $VERSION"
|
||||
echo "$dvmsg_102"
|
||||
echo "$dvmsg_103"
|
||||
echo "$dvmsg_104"
|
||||
echo "$dvmsg_105"
|
||||
echo "$dvmsg_106"
|
||||
echo "$dvmsg_107"
|
||||
}
|
||||
|
||||
|
||||
########### MAIN PROGRAM ###########
|
||||
|
||||
# Set program title
|
||||
title="$head_000 $head_002"
|
||||
apps_title="${gpmsg_001}"
|
||||
|
||||
# Check if dialog is not installed, exited!
|
||||
command_installed "dialog"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
display_devstools_header "${gpmsg_001}"
|
||||
echo "${head_001}"
|
||||
exit 200
|
||||
fi
|
||||
|
||||
# Check if os is valid!
|
||||
get_osname
|
||||
if [ "${os_name}" == "${head_unknow}" ]
|
||||
then
|
||||
dialog_error_box "${head_error}" "${head_os_error}"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
command_installed "zip"
|
||||
if [ $? -ne 0 ]; then
|
||||
dialog_error_box "${head_error}" "${head_zip}"
|
||||
exit 9
|
||||
fi
|
||||
|
||||
# Check for arguments option
|
||||
help=false
|
||||
version=false
|
||||
update=false
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--help)
|
||||
help=true
|
||||
shift
|
||||
;;
|
||||
--version)
|
||||
version=true
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
if [[ -z $BACKUP_ZIPFILE ]]; then
|
||||
BACKUP_ZIPFILE="$1"
|
||||
shift
|
||||
else
|
||||
help
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Check to show help
|
||||
if $help; then
|
||||
help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check to show command version
|
||||
if $version; then
|
||||
display_devstools_header ""
|
||||
echo "$0"
|
||||
echo "${dvmsg_101_0} $VERSION"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check for empty project path
|
||||
if [[ -z $BACKUP_ZIPFILE ]]; then
|
||||
help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BASEZIPFILE=$(basename $BACKUP_ZIPFILE)
|
||||
|
||||
# Developer Profile Restore
|
||||
dialog_yesno "${gpmsg_113} $BASEZIPFILE?"
|
||||
case ${result} in
|
||||
0)
|
||||
developer_restore "$BIN_HOME/$GPG_CONFIG_PATH" "$BACKUP_ZIPFILE"
|
||||
rc=$?
|
||||
case $rc in
|
||||
0)
|
||||
dialog_error_box "${head_info}" "${gpmsg_114}"
|
||||
clear
|
||||
exit 0
|
||||
;;
|
||||
10)
|
||||
dialog_error_box "${head_error}" "${gpmsg_107}"
|
||||
clear
|
||||
exit $rc
|
||||
;;
|
||||
11)
|
||||
dialog_error_box "${head_error}" "${gpmsg_108}"
|
||||
clear
|
||||
exit $rc
|
||||
;;
|
||||
13)
|
||||
dialog_error_box "${head_error}" "${gpmsg_109}"
|
||||
clear
|
||||
exit $rc
|
||||
;;
|
||||
14)
|
||||
dialog_error_box "${head_error}" "${gpmsg_111}"
|
||||
clear
|
||||
exit $rc
|
||||
;;
|
||||
15)
|
||||
dialog_error_box "${head_error}" "${gpmsg_112}"
|
||||
clear
|
||||
exit $rc
|
||||
;;
|
||||
18)
|
||||
dialog_error_box "${head_error}" "${gpmsg_110}"
|
||||
clear
|
||||
exit $rc
|
||||
;;
|
||||
*)
|
||||
dialog_error_box "${head_error}" "${head_op_error} (${rc})"
|
||||
exi $rc
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
dialog_error_box "${head_error}" "${head_op_error}"
|
||||
;;
|
||||
esac
|
||||
|
||||
# End Main Program
|
||||
clear
|
Loading…
Reference in a new issue