Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # +-----------------------------------+
- # | Variaveis |
- # +-----------------------------------+
- LISTA_ARQUIVOS=lista_arquivos.txt ///variável com lista em .txt com nome dos diretórios a serem feitos o backup.
- NOME_PACOTE=backup_$(date +%d-%m-%Y).tar.gz ///nome do pacote compactado
- CLOUD_SERVER=192.168.56.11 ///Servidor para onde será enviado o backup
- CLOUD_LOGIN=root ///login do servidor
- MYSQL_PASS=fatec ///senha do servidor mysql
- MYSQL_USER=root ///nome de usuário do mysql
- DATABASE=biblioteca ///nome do banco de dados
- SQL_FILE=mysqldump_$(date +%d-%m-%Y).sql ///nome do arquivo .sql
- fnSucesso(){ ///Função de sucesso e erro
- echo "[ OK ] - $1"
- }
- fnErro(){
- echo "[ERRO] - $1"
- }
- fnCompactar(){ ///Função de compactação do arquivo
- tar -czf $NOME_PACOTE -T $LISTA_ARQUIVOS > /dev/null 2>&1 ///Compacta o pacote e não retorna nada na tela
- if [ $? -eq 0 ] ///Se o comando $? retornar 0, o processo de compactação fará "Sucesso", caso não "Erro"
- then
- fnSucesso "Processo de Compactacao"
- else
- fnErro "Processo de Compactacao"
- fi
- }
- fnDump(){ ///Função de backup
- mysqldump -u$MYSQL_USER -p$MYSQL_PASS $DATABASE > $SQL_FILE 2> /dev/null ///acessa o banco de dados usando usuário, senha e nome do banco de dados , e não retorna nada na tela.
- if [ $? -eq 0 ]
- then
- QTDD_LINHAS=$(wc -l $SQL_FILE | awk '{print $1}') ///Exibe a quantidade de linhas
- fnSucesso "Dump SQL gerado com $QTDD_LINHAS linhas" ///Se o comando funcionar , exibe "Sucesso", caso contrário "Erro"
- else
- fnErro "Dump SQL"
- fi
- }
- fnEnvioRemoto(){ ///Função de envio remoto usando SSH
- scp $NOME_PACOTE $CLOUD_LOGIN@$CLOUD_SERVER: > /dev/null 2>&1 //Processo de cópia de arquivos entre o servidor e o usuário.
- if [ $? -eq 0 ]
- then
- TAMANHO=$(du -sh $NOME_PACOTE | awk '{print $1}') ///Verifica o tamanho do pacote
- fnSucesso "Arquivo $NOME_PACOTE enviado para $CLOUD_SERVER com tamanho de $TAMANHO" ///Caso o arquivo é enviado corretamente para o servidor , irá exibir o tamanho do pacote.
- else
- fnErro "Envio remoto para $CLOUD" ///Caso contrário, "Erro" no envio.
- fi
- }
- fnChecaIntegridade(){ ///Checagem da integridade do pacote.
- HASH_LOCAL=$(md5sum $NOME_PACOTE | awk '{print $1}') ///Irá checar a integridade do pacote por meio da HASH md5.
- HASH_REMOTO=$(ssh $CLOUD_LOGIN@$CLOUD_SERVER md5sum $NOME_PACOTE | awk '{print $1}') ///Irá verifica a hash do pacote no servidor
- if [ $HASH_LOCAL == $HASH_REMOTO ] ///Se a HASH local for igual a Hash do servidor remoto exibe "Sucesso", caso a hash for diferente, exibe "Erro", arquivos corrompidos.
- then
- fnSucesso "Arquivos integros com hash $HASH_LOCAL"
- else
- fnErro "Hashs diferentes, arquivos corrompidos"
- fi
- }
- ///Área de chamada das funções.
- fnDump
- fnCompactar
- fnEnvioRemoto
- fnChecaIntegridade
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement