Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
linux:scripts:backupgpg [25/01/2013 08:21] matelinux:scripts:backupgpg [22/03/2020 11:52] (actual) – [2.2] mate
Línia 1: Línia 1:
 = backup, encriptado y copia a remoto = backup, encriptado y copia a remoto
 +== 2.2
 +  * disociar parámetros de script en 2 ficheros
 +    * usar ''source'' para incluir las variables necesarias
 +    * o volver a mirar opciones de usar otro tipo de fichero (INI,JSON)
 +
 +== v2.1
 +  * sustitución **GPG** por **[[software:utils:enchive|ENCHIVE]]**
 +  * valorando cambio de cálculo de hash
 +    * sha1 -> md5 (la mitad de tiempo) : las colisiones no son importantes
 +    * meow hash (por valorar)
 +  * pte: cambiar el nombre del script!
 +
 +<code bash backup_fs_gpg.sh>
 +#!/bin/bash
 +
 +#
 +# FUNCIONES
 +#
 +
 +function calcula_checksum() {
 +# calcula el SHA1 de los ficheros contenidos en el directorio pasado por parámetro
 +
 + TMP=$(find "$DIR_ORIGEN/$1" -type f -print0 | xargs -0 sha1sum | sort | cut -d " " -f 1 | sha1sum)
 + CHEKSUM_ACT=$(echo $TMP | cut -d " " -f1)
 + unset TMP
 +}
 +
 +
 +#
 +# VARIABLES
 +#
 +
 +FICHERO="diezminutos_com"
 +DIR_ORIGEN="/home/diezminutos"
 +CHEKSUM_ACT=""
 +CAMBIOS="NO"
 +DBB_HOST="mysql.10minutosaldia.com"
 +DBB_USER="mate_backup"
 +DBB_PASSWORD="ot3trecfe4y5fxx722xekngf"
 +BACKUP_PATH="${DIR_ORIGEN}/backup"
 +ENCHIVE_PATH="${BACKUP_PATH}/enchive"
 +ENCHIVE_PUBKEY="mate_es.pub"
 +
 +FECHA=`eval date +%y%m%d`
 +
 +DIRECTORIOS_TAR=""
 +
 +# backup BBDD
 +declare -a BBDD=("10minutos" "10minutosbeta")
 +for BDD in "${BBDD[@]}"; do
 + /usr/bin/mysqldump --opt --user=${DBB_USER} --password=${DBB_PASSWORD} --host=${DBB_HOST} ${BDD} > ${DIR_ORIGEN}/mysqldump/${BDD}.sql
 + ${ENCHIVE_PATH} --pub-key=${BACKUP_PATH}/${ENCHIVE_PUBKEY} archive ${DIR_ORIGEN}/mysqldump/${BDD}.sql
 + rm ${DIR_ORIGEN}/mysqldump/${BDD}.sql
 +done
 +
 +# calcula SHA1 directorios
 +declare -a DIRECTORIOS=("app.10minutos" "appb.10minutos" "public" "beta" "backup" "system-3.1.11" "mysqldump")
 +
 +for directorio in "${DIRECTORIOS[@]}"; do
 +
 + DIRECTORIOS_TAR="${DIRECTORIOS_TAR} ${directorio}"
 +
 + ## leer checksum anterior, si existe
 + CHEKSUM_ANT=""
 + if [ -e "$DIR_ORIGEN/$directorio.checksum" ]; then
 + CHEKSUM_ANT=$(cat "$DIR_ORIGEN/$directorio.checksum")
 + fi
 +
 + calcula_checksum $directorio
 +
 +
 + if [ "$CHEKSUM_ANT" != "$CHEKSUM_ACT" ]; then
 + CAMBIOS="SI"
 + echo -e "$CHEKSUM_ACT" > $DIR_ORIGEN/$directorio.checksum
 + fi
 +
 +done
 +
 +
 +if [ "$CAMBIOS" == "SI" ]; then
 + # compresión
 + tar zvcpf $DIR_ORIGEN/$FICHERO.tar.gz --exclude-tag-all=.nobackup ${DIRECTORIOS_TAR} $DIR_ORIGEN/*.sh 
 +
 + #encriptación
 + ${ENCHIVE_PATH} --pub-key=${BACKUP_PATH}/${ENCHIVE_PUBKEY} archive ~/$FICHERO.tar.gz
 +
 + # borrado fichero original
 + rm -f ~/$FICHERO.tar.gz
 +
 + # renombrado
 + mv $FICHERO.tar.gz.enchive $FECHA-$FICHERO.tar.gz.enchive
 +
 +else
 + touch $DIR_ORIGEN/$FECHA-SINCAMBIOS.TXT
 +fi
 +
 +</code>
 +== v2
 +  * instalar llave pública contraseña GPG para encriptado fichero TAR (mover entre servidores sin problema)
 +    * Para desencriptar, solo hace falta la clave secreta y el comando: ''$ gpg --decrypt <fichero>''
 +  * volcado ficheros en $HOME para que "otro" los recoja <- declarados ARRAY
 +  * volcado BBDD **mysqldump** con usuario poco privilegiado (SELECT) <- declaradas ARRAY
 +
 +<code bash backup_fs_gpg.sh>
 +#!/bin/bash
 +
 +#
 +#       FUNCIONES
 +#
 +
 +function calcula_checksum() {
 +# calcula el SHA1 de los ficheros contenidos en el directorio pasado por parámetroe
 +
 +        TMP=$(find "$DIR_ORIGEN/$1" -type f -print0 | xargs -0 sha1sum | sort | cut -d " " -f 1 | sha1sum)
 +        CHEKSUM_ACT=$(echo $TMP | cut -d " " -f1)
 +        unset TMP
 +}
 +
 +
 +
 +#
 +#       VARIABLES
 +#
 +
 +FICHERO="fruitsmontmany_es"
 +DIR_ORIGEN="/home/vividumcodex"
 +FECHA=`eval date +%y%m%d`
 +CAMBIOS="NO"
 +DBB_HOST="mysql.vividumcodex.com"
 +DBB_USER="mate_backup"
 +DBB_PASSWORD="xxx"
 +DIRECTORIOS_TAR=""
 +
 +# backup BBDD
 +declare -a BBDD=("fruitsmontmany_es")
 +for BDD in "${BBDD[@]}"; do
 + /usr/bin/mysqldump --opt --user=${DBB_USER} --password=${DBB_PASSWORD} --host=${DBB_HOST} ${BDD} > ${DIR_ORIGEN}/mysqldump/${BDD}.sql
 +done
 +
 +
 +
 +# calcula SHA1 directorios
 +declare -a DIRECTORIOS=("fruitsmontmany.es" "mysqldump")
 +
 +for directorio in "${DIRECTORIOS[@]}"; do
 +
 + DIRECTORIOS_TAR="${DIRECTORIOS_TAR} ${directorio}"
 +
 +        ## leer checksum anterior, si existe
 +        CHEKSUM_ANT=""
 +        if [ -e "$DIR_ORIGEN/$directorio.checksum" ]; then
 +                CHEKSUM_ANT=$(cat "$DIR_ORIGEN/$directorio.checksum")
 +        fi          
 +
 +        calcula_checksum $directorio
 +
 +
 +        if [ "$CHEKSUM_ANT" != "$CHEKSUM_ACT" ]; then
 +                CAMBIOS="SI"
 +                echo -e "$CHEKSUM_ACT" > $DIR_ORIGEN/$directorio.checksum
 +        fi          
 +
 +done
 +
 +
 +if [ "$CAMBIOS" == "SI" ]; then
 +
 + # compresi�n
 + tar zvcpf ~/$FICHERO.tar.gz --exclude-tag-all=.nobackup ${DIRECTORIOS_TAR} ~/*.sh
 +
 + #encriptaci�n
 + gpg --trust-model always -r "Miguel Angel Torres Egea (backups)" --encrypt ~/$FICHERO.tar.gz
 +
 + # borrado fichero original
 + rm -f ~/$FICHERO.tar.gz
 +
 + # renombrado
 + mv $FICHERO.tar.gz.gpg $FECHA-$FICHERO.tar.gz.gpg
 +
 + # copia
 +## scp -i ~/.ssh/backups\@seedbox.torresegea.es $FECHA-$FICHERO.tar.gz.gpg backups@seedbox.torresegea.es:~/miguelangel.torresegea.es
 +
 + # borrado fichero encriptado
 +## rm -f $FECHA-$FICHERO.tar.gz.gpg
 +else
 +        touch $DIR_ORIGEN/$FECHA-SINCAMBIOS.TXT
 +##        scp -i ~/.ssh/backups\@seedbox.torresegea.es $FECHA-SINCAMBIOS.* backups@seedbox.torresegea.es:~/miguelangel.torresegea.es
 +##        rm -f $DIR_ORIGEN/$FECHA-SINCAMBIOS.TXT
 +
 +fi
 +</code>
 +<code txt Llave pública>
 +-----BEGIN PGP PUBLIC KEY BLOCK-----
 +
 +mQENBFWTLEsBCADPGYcDAMfzYLivjin9FgFGS3xQOmV4YAmN2poNkfUFSnUHgAZo
 +6Kte1cXBN7TSoCMq7ExXE8xwTAHyMIuOGUfmuLHg/c1Hxfm7fxGd1pRkYXvxNQ3F
 +8kliCpBq4/Y/7Syeq3rARBX6esyBaLfERrmxoUh01oBr7E8nn52Qmu+k1Xn7ZZYA
 +8LMpnPR92tEvtSnpUMkk71AaHKEBWd+XOWywMddz0us/8qRkuQ5NsOhIi7T2pMKt
 +mSJKGmZVE5MAetJgBQ1Fy8Wak7VTwsxx33E0zAYzZjW6PfUecA67dy/cERnzWy5g
 +c3oQt9RoLGWQYMBWi2dmTC1dWbBwUIxhwl73ABEBAAG0Nk1pZ3VlbCBBbmdlbCBU
 +b3JyZXMgRWdlYSAoYmFja3VwcykgPG1hdGViY25AZ21haWwuY29tPokBOAQTAQIA
 +IgUCVZMsSwIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQaInNFkRv/buM
 +twf+LFrq4kR2LTG6G6lE+NUIV5vPB9UZ6QNnhn/J5/F709IQWWWxzIy7Nk3LKrRN
 +QkHl+BLs5nswdUnEhNGah3Eg6eEzQijwsHr7FDr/5cu1zDZdZHrP6CpGo1nqAxUf
 +qoRTgt00l5793U/uPcE6woRcc6vtMx0vOm8dWRvBNmNd+jLabpuRQ5DSNfYfF4BM
 +hXOKyBiFvdAHVc6Lz5vhEDzDbnRH5Q+A/loNGPu7vg5tHfQbEIcVEssTIy9BoxLJ
 +FfH/Y3q9htzL7tOdZjosxuTTnwoC5FWUMBAQAoY9njPE+w3OZ4H2cwWg/jciQJx+
 +ZejRkKGuZIQzs3ibc1W/2SV5arkBDQRVkyxLAQgA9xihCUbQdVlo6f3LGM3gf5/6
 +qbhv9J1RYM/59XMcVBt055CgMUiXok1eKeZLpliN7tfuz3VL61aw6zkk/b2PCbQF
 +9nzmaSX7B6lPOximCNCN6qYpABPPfLv0mVx/sNQv7AQERo2+2YX3YcMmiJuVXNVk
 +CD3i1VVPJ+YVWBH8A10EjH3eb8KLKG9R0gO2ru5UiBK8W48UQlh5XUWQr2oPvU4U
 +z+wAFyEHr18sMFnimzL1IERmZ2EBrWl7p9u/rJVy07E8rLtXQrbOV0ZLuAyUlZXe
 +UIDkNI1UIeX3DJXvoGlwVm/w+44oPOLna2DYZuiHGaB3MX+Oo40M4BX3yZCxRwAR
 +AQABiQEfBBgBAgAJBQJVkyxLAhsMAAoJEGiJzRZEb/27lhoIAKVDqPOK5zc4/zKh
 +bKbuFyLdlqBnlT2w49tgTRRimOfKpZBpQ4xVAtC/Vf5WMXn+DJVGPAAOlXRR7BBN
 +85+sXUfputCXRTCYk0da4fvi424gmFl2/kWYktTFAbFwH6G1X3I1cB2Pjt25rxKf
 +2P0K51hOSQ9YR7O2g561Aw3tMmylA9sWYoDXXUO+MK5Fx1OzGAo6PKqavp+QvEHQ
 +HZhNeqYVHfYabPtWgW3RpwKgFDyCGwZ9BYrukq4ReubicyIsthxLhAXK6qUT4hVz
 +2ZQZ7Tvsoe6Qv2WBT0e7KPmuhe1n8jrxqD2DFYfrbwN6n/RdWZW6pwL3Uk7lH9Ze
 +s4ItKkM=
 +=PS0g
 +-----END PGP PUBLIC KEY BLOCK-----
 +
 +</code>
 +
 +
 +== v1
 Instalando GPG y tu clave pública, encriptas el contenido del TAR poniéndote a tí como destinatario, y será el único en poder abrir el fichero. No hace falta poner contraseñas, ni si quiera en el script Instalando GPG y tu clave pública, encriptas el contenido del TAR poniéndote a tí como destinatario, y será el único en poder abrir el fichero. No hace falta poner contraseñas, ni si quiera en el script
  
Línia 26: Línia 253:
  
 </code> </code>
 +
  
 Para desencriptar, solo hace falta la clave secreta y el comando: ''$ gpgp --decrypt <fichero>'' Para desencriptar, solo hace falta la clave secreta y el comando: ''$ gpgp --decrypt <fichero>''
  • linux/scripts/backupgpg.1359130888.txt.gz
  • Darrera modificació: 25/01/2013 08:21
  • per mate