Advertisement
Guest User

Script Thiago 2º Prova - Desenvolvimento

a guest
Apr 24th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.41 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # +-----------------------------------+
  4. # |             Variaveis             |
  5. # +-----------------------------------+
  6. LISTA_ARQUIVOS=lista_arquivos.txt                        ///variável com lista em .txt com nome dos diretórios a serem feitos o backup.
  7. NOME_PACOTE=backup_$(date +%d-%m-%Y).tar.gz              ///nome do pacote compactado
  8. CLOUD_SERVER=192.168.56.11                               ///Servidor para onde será enviado o backup
  9. CLOUD_LOGIN=root                                         ///login do servidor
  10. MYSQL_PASS=fatec                                        ///senha do servidor mysql
  11. MYSQL_USER=root                                         ///nome de usuário do mysql
  12. DATABASE=biblioteca                                     ///nome do banco de dados
  13. SQL_FILE=mysqldump_$(date +%d-%m-%Y).sql                ///nome do arquivo .sql
  14.  
  15. fnSucesso(){                ///Função de sucesso e erro
  16.    echo "[ OK ] - $1"
  17. }
  18.  
  19. fnErro(){
  20.    echo "[ERRO] - $1"
  21. }
  22.  
  23. fnCompactar(){                                                      ///Função de compactação do arquivo
  24.    tar -czf $NOME_PACOTE -T $LISTA_ARQUIVOS > /dev/null 2>&1        ///Compacta o pacote e não retorna nada na tela
  25.  
  26.    if [ $? -eq 0 ]                          ///Se o comando $? retornar 0, o processo de compactação fará "Sucesso", caso não "Erro"
  27.    then
  28.       fnSucesso "Processo de Compactacao"
  29.    else
  30.       fnErro "Processo de Compactacao"
  31.    fi
  32. }
  33.  
  34. fnDump(){                                                                       ///Função de backup
  35.    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.
  36.  
  37.    if [ $? -eq 0 ]
  38.    then
  39.       QTDD_LINHAS=$(wc -l $SQL_FILE | awk '{print $1}')       ///Exibe a quantidade de linhas
  40.       fnSucesso "Dump SQL gerado com $QTDD_LINHAS linhas"     ///Se o comando funcionar , exibe "Sucesso", caso contrário "Erro"
  41.    else
  42.       fnErro "Dump SQL"
  43.    fi
  44.  
  45. }
  46.  
  47. fnEnvioRemoto(){            ///Função de envio remoto usando SSH
  48.    scp $NOME_PACOTE $CLOUD_LOGIN@$CLOUD_SERVER: > /dev/null 2>&1    //Processo de cópia de arquivos entre o servidor e o usuário.
  49.  
  50.    if [ $? -eq 0 ]
  51.    then
  52.       TAMANHO=$(du -sh $NOME_PACOTE | awk '{print $1}')     ///Verifica o tamanho do pacote
  53.       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.
  54.    else
  55.       fnErro "Envio remoto para $CLOUD"         ///Caso contrário, "Erro" no envio.
  56.    fi
  57.  
  58. }
  59.  
  60. fnChecaIntegridade(){               ///Checagem da integridade do pacote.
  61.    HASH_LOCAL=$(md5sum $NOME_PACOTE | awk '{print $1}')             ///Irá checar a integridade do pacote por meio da HASH md5.
  62.    HASH_REMOTO=$(ssh $CLOUD_LOGIN@$CLOUD_SERVER md5sum $NOME_PACOTE | awk '{print $1}')      ///Irá verifica a hash do pacote no servidor
  63.  
  64.    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.
  65.    then
  66.       fnSucesso "Arquivos integros com hash $HASH_LOCAL"
  67.    else
  68.       fnErro "Hashs diferentes, arquivos corrompidos"
  69.    fi
  70.  
  71. }
  72.  ///Área de chamada das funções.
  73. fnDump
  74. fnCompactar
  75. fnEnvioRemoto
  76. fnChecaIntegridade
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement