- Dúvida...
+ Responder ao Tópico
-
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.
-
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.
-
Re: Dúvida...
Tem um ótimo tutorial sobre shel script aqui
http://www.freeos.com/guides/lsst/