Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Eu sou programador PHP e não tenho muito conhecimento da linguagem shell script, mas mesmo assim me arrisquei a criar um script para fazer backup de todas as bases de dados MySQL do meu servidor.
Eu usei outro script como base para criar o meu, mas está dando erro de sintaxe.
Alguém poderia me dizer o que há de errado? Segue o código:
#!/bin/sh
arquivo="backup_mysql_"$(date "+%Y%m%d%H")
destino="/hdd1/backups/mysql"
num_arquivos=10
echo "Criando o dump das bases e tabelas..."
mysqldump --all-databases > "$HOME/$arquivo.sql"
echo "Dump criado!"
echo "Compactando o arquivo SQL..."
gzip -f "$HOME/"$arquivo.sql
echo "Arquivo SQL compactado!"
echo "Verificando se o diretório de destino existe..."
if [ -d $destino ]; then
echo "O diretório existe!"
continue
else
echo "O diretório não existe e será criado..."
mkdir $destino
echo "Diretório criado!"
fi
echo "Copiando o arquivo compacatado para a pasta de destino..."
cp -f "$HOME/"$arquivo.sql.gz "$destino/$arquivo.sql.gz"
echo "Arquivo copiado!"
echo "Verificando a quantidade de arquivos no diretório de destino..."for arq in $b; do
a = $(($a+1))
if [ "$a" -gt $c ]; then
rm -f "$destino/$arq"
echo "Arquivo $arq removido!"
fi
done
echo "Excluíndo o arquivo do diretório local..."
rm -f "$HOME/"$arquivo.tar.gz
echo "Arquivo excluído!"
echo "Backup concluído com sucesso!"
Obrigado.
Valeu Beraldo! Removi os espaços e funcionou direitinho! :D
Um abraço!
Shell é meio chato neste ponto:
a = 0
b = $(ls -t $destino)
c = $num_arquivos
VOcê não pode colcoar espaços aí, senão ele interpreta como comando. Deixe assim:
a=0
b=$(ls -t $destino)
c=$num_arquivos
era aí o erro de sintaxe? se não for, diga em que linha ele ocorre