+ Responder ao Tópico



  1. #1

    Padrão Dúvida...

    Bom dia pessoal.
    Gostaria de tirar uma dúvida.
    Eu acabei de elaborar um script para fazer backup do MySQL e logo em seguida compactar esse arquivo.

    Segue abaixo o script.

    #!/bin/bash

    # Definindo as variaveis
    BKP_MYSQL=/backup/bkp_mysql/mysql
    DATA=`date +%d%m%y`
    DATABASE=xxx
    DIA=`date +%a`
    FILE_BKP=mysql.sql
    MYSQL_PASSWD=yyy
    MYSQL_USER=root
    MYSQLDUMP=/usr/local/mysql/bin/mysqldump
    RM="/bin/rm -rf"
    TAR="/bin/tar -cvzf"

    # Acessando a pasta onde os backups serao armazenados
    cd "$BKP_MYSQL"/"$DIA"

    # Realizando o backup da base de dados
    "$MYSQLDUMP" -u "$MYSQL_USER" --password="$MYSQL_PASSWD" --databases "$DATABASE" > "$FILE_BKP"

    # Compactando o backup da base de dados
    if $TAR $DATABASE.$DATA.tar $FILE_BKP
    then
    $RM $FILE_BKP
    fi

    A minha dúvida é a seguinte. No final do script tem o comando para compactar o arquivo de backup do MySQL e caso a compactação seja executada com sucesso o arquivo original será deletado.

    As variáveis que estou utilizando nesta parte estavam entre aspas ("). Eu precisei tirar as aspas para que o comando tar e rm funcionassem.

    Alguém saberia me dizer por quê com aspas eles não funcionaram? Até onde eu sei é aconselhável utilizar aspas para proteger a variável da interpretação do bash.

  2. #2
    ABG
    Visitante

    Padrão Re: Dúvida...

    Olha só eu não sou especialista em shell script mas me parece que com o uso de aspas o código abaixo estaria mesmo errado.

    if "$TAR" "$DATABASE.$DATA.tar" $FILE_BKP"
    then
    "$RM" "$FILE_BKP"
    fi

    Por exemplo, na primeira linha, o if espera o retorno de uma função e vc estaria retornando três strings para ele.

    Agora se vc fizesse algo como isso:

    if /bin/tar -cvzf "$DATABASE.$DATA.tar" "$FILE_BKP"

    Pelo meu ver estaria correto, porque os valores das variáveis seriam substituidos criando as strings de origem e destino, que por sua vez, seriam usadas no comando tar que devolveria um valor para o if.

    Abraço.

  3. #3
    ABG
    Visitante

    Padrão Re: Dúvida...

    Tem um ótimo tutorial sobre shel script aqui
    http://www.freeos.com/guides/lsst/