Hola Me parece que este bash no se puede completar si no poseo una cuenta en Amazon Web Services, de forma que pueda crear un bucket de ...

Luis Salas

Luis Salas

Pregunta
studenthace 5 años

Hola

Me parece que este bash no se puede completar si no poseo una cuenta en Amazon Web Services, de forma que pueda crear un bucket de mi cuenta, ¿estoy en lo correcto?

Muchas gracias.

4 respuestas
para escribir tu comentario
    Luis Salas

    Luis Salas

    studenthace 5 años

    Hola Muchas gracias nuevamente. ¡Y claro!, este es el código que tengo por el momento:

    #!/bin/bash # Script para obtener una copia desde mysql # Desarrollado por Luis Salas PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin set -e readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" readonly SCRIPT_NAME="$(basename "$0")" function assert_is_installed { local readonly name="$1" if [[ ! $(command -v ${name}) ]]; then log_error "The binary '$name' is required by this script but is not installed or in the system's PATH." exit 1 fi } function log_error { local readonly message "$1" log "ERROR" "$message" } function log { local readonly level="$1" local readonly message="$2" local readonly timestamp=$(date + "%Y-%m-%d %H:%M:%S") >&2 echo -e "${timestamp} [${level}] [$SCRIPT_NAME] ${message}" } function run { assert_is_installed "mysql" assert_is_installed "mysqldump" assert_is_installed "aws" assert_is_installed "gzip" } function make_backup { local BAK="$(echo $HOME/mysql)" local MYSQL="$(which mysql )" local MYSQLDUMP="$(which mysqldump)" local GZIP="$(which gzip)" local NOW=$(date + "%d-%m-%Y") local BUCKET="xxxxxx" USER="xxxxx" PASS="xxxxxx" HOST="xxxxxx" DATABASE="xxxxxx" [! -d "$BAK" ] && mkdir -p "$BAK" FILE=$BAK/$DATABASE.$NOW-$(date +"%T").gz local SECONDS=0 $MYSQLDUMP --single-transaction --set-gtid-purged=OFF -u $USER -h $HOST -p$PASS $DATABASE | $GZIP -9 > $FILE duration=$SECONDS echo "$(($duration / 60)) minutes" aws s3 cp $BAK "s3://$BUCKET" --recursive } run make_backup

    Básicamente este es el código desarrollado en el curso basado en generar un respaldo a la cuenta de AWS. Sin embargo quisiera utilizar otra plataforma. Para las siguientes variables asigné los siguientes valores:

    local BUCKET="xxxxx" ----> Dirección del dominio principal brindada por el Cpanel de la cuenta en infinity

    USER="xxxxx" ---> Lo intenté con el usuario de mysql instalado en Ubuntu server, también con los usuarios FTP y Mysql de infinity, brindados en el Cpanel PASS="xxxxxx" ---> Lo intenté con la contraseña de mysql instalado en Ubuntu server, también con el pass de FTP y Mysql de infinity. HOST="xxxxxx" --> coloqué "localhost" ya que actualmente mi ubuntu lo corro desde una máquina virtual, y también asigné los hostname de FTP y MySql de infinity DATABASE="xxxxxx" --> coloqué el nombre de de la base de datos existente en mi Ubuntu server, también opté por crear una base de datos en infinity y asigné el nombre de la misma acá.

    Quisiera añadir que no mezclé valores, si no que fuí probando acorde a los datos de cada plataforma(Información de Ubuntu con información de Ubuntu y de Infinity con Infinity). Las disculpas del caso si la idea anterior es redundante. Muchas gracias

    Massimo Di Berardino

    Massimo Di Berardino

    studenthace 5 años

    Me podrías compartir el código o una captura del archivo

    respaldoBaseDatos.sh
    si tiene algún dato privado omitelo porfa. Lo primero que veo es que te esta arrojando un error en el formato de fecha, luego creo que la coneccion con infinity debe ser diferente estuve leyendo un poco en la documentación y no encontré algún ejemplo, pero pasame el archivo y vemos que puede estar fallando

    Luis Salas

    Luis Salas

    studenthace 5 años

    Muchas gracias Massimo. Estuve intentando usar otro servicio de nube, en este caso https://infinityfree.net/ Sin embargo analizando el código, no estoy muy seguro de que debo de hacer con la siguiente sentencia:

    aws s3 cp $BAK "s3://$BUCKET" --recursive

    Es muy probable que esté equivocado, pero mi criterio es el siguiente:

    local BUCKET -- En ella puedo declarar la dirección del main domain de mi nube no? (recordar que estoy intentando de hacer todo esto con un servicio distinto a aws)

    En las variables USER, PASS, HOST y DATABASE. ¿Debo declarar la información de acceso de mysql en el servidor localhost, o debo de asignar la información de acceso a mi servicio de nube externo en infinityfree.net?

    He realizado modificaciones y mi resultado es el siguiente:

    luis@platzi:~/ejemplosBash$ ./respaldoBaseDatos.sh date: extra operand ‘%d-%m-%YTry 'date --help' for more information. ./respaldoBaseDatos.sh: line 64: [!: command not found mysqldump: [Warning] Using a password on the command line interface can be insecure. mysqldump: Got error: 2003: Can't connect to MySQL server on 'ftpupload.net' (111) when trying to connect 0 minutes upload failed: ../mysql/epiz_25948836_test_db.-19:59:45.gz to s3://kpq7wxhw.epizy.com/epiz_25948836_test_db.-19:59:45.gz Unable to locate credentials upload failed: ../mysql/test_db.-19:54:52.gz to s3://kpq7wxhw.epizy.com/test_db.-19:54:52.gz Unable to locate credentials upload failed: ../mysql/epiz_25948836_test_db.-20:04:05.gz to s3://kpq7wxhw.epizy.com/epiz_25948836_test_db.-20:04:05.gz Unable to locate credentials upload failed: ../mysql/test_db.-19:51:57.gz to s3://kpq7wxhw.epizy.com/test_db.-19:51:57.gz Unable to locate credentials upload failed: ../mysql/test_db.-21:56:31.gz to s3://kpq7wxhw.epizy.com/test_db.-21:56:31.gz Unable to locate credentials upload failed: ../mysql/xxxxxx.-21:47:43.gz to s3://kpq7wxhw.epizy.com/xxxxxx.-21:47:43.gz Unable to locate credentials upload failed: ../mysql/xxxxxx.-21:50:13.gz to s3://kpq7wxhw.epizy.com/xxxxxx.-21:50:13.gz Unable to locate credentials upload failed: ../mysql/xxxxxx.-21:51:12.gz to s3://kpq7wxhw.epizy.com/xxxxxx.-21:51:12.gz Unable to locate credentials upload failed: ../mysql/test_db.-21:40:44.gz to s3://kpq7wxhw.epizy.com/test_db.-21:40:44.gz Unable to locate credentials upload failed: ../mysql/test_db.-21:41:06.gz to s3://kpq7wxhw.epizy.com/test_db.-21:41:06.gz Unable to locate credentials upload failed: ../mysql/test_db.-21:41:48.gz to s3://kpq7wxhw.epizy.com/test_db.-21:41:48.gz Unable to locate credentials upload failed: ../mysql/test_db.-21:53:18.gz to s3://kpq7wxhw.epizy.com/test_db.-21:53:18.gz Unable to locate credentials

    Muchas gracias por la ayuda.

    Massimo Di Berardino

    Massimo Di Berardino

    studenthace 5 años

    ¡Hola Luis! Efectivamente como comentas deberías tener una cuenta en AWS o algún otro servicio en la nube. La buena noticia es que la mayoría de servicios en la nube te ofrecer un tiempo gratis de prueba para utilizar los servicios, te comparto el link de Amazon Web Service con la información.

Curso de Administración de Servidores Linux

Curso de Administración de Servidores Linux

Linux es el sistema operativo con mayor adopción para la administración de servidores en Internet. Domina la administración del sistema operativo, archivos, permisos, usuarios y paquetes. Utiliza herramientas para monitorear servicios y procesos. Establece tareas programadas. Configura la seguridad de tu servidor y red para reducir vulnerabilidades.

Curso de Administración de Servidores Linux
Curso de Administración de Servidores Linux

Curso de Administración de Servidores Linux

Linux es el sistema operativo con mayor adopción para la administración de servidores en Internet. Domina la administración del sistema operativo, archivos, permisos, usuarios y paquetes. Utiliza herramientas para monitorear servicios y procesos. Establece tareas programadas. Configura la seguridad de tu servidor y red para reducir vulnerabilidades.