Desenvolvimento de um Servidor de Backup Inteligente Utilizando a Linguagem Shell Script em Linux Frandecy R. N. de O. Souza, Neilson M. Faria, Taimara S. Dias 1, Matheus B. M. Vianna2 Resumo: O projeto consiste no desenvolvimento de um servidor de Backup Linux automático para uma empresa, onde esse servidor terá a missão de realizar o processo de backup dos arquivos de trabalho (planilhas, textos, imagens etc.) de todos os usuários de informática no setor administrativo da empresa de forma automática e eficiente. Os arquivos que serão becapeados estarão em um diretório compartilhado no computador do usuário. Com o servidor desenvolvido e implementado, a segurança dos dados administrativos da empresa irá aumentar, haja vista que no caso de algum computador porventura apresentar algum problema técnico, esses dados não serão perdidos e estarão armazenados no servidor através de hds internos e externos de grande capacidade de armazenamento. Palavras-chave: Servidor de backup; Linguagem Shell Script; Sistema Linux; Segurança; Eficiência. Abstract: The project is to develop a Linux server automatic backup for a company where the server will have the task of conducting the process of backing up work files (spreadsheets, text, images, etc..) Of all computer users in the administrative sector company automatically and efficiently. The files will be becap be in a shared directory in the User's computer. With the server developed and implemented, data security administration of the company will increase, considering that in the case of a computer probably has any technical problem, data will not be lost and will be stored on the server through hds internal and external large-capacity storage. Keywords: Backup Server, Shell Scripting Language, Linux System, Security, Efficiency. I. INTRODUÇÃO A execução de cópias de segurança pode ser uma tarefa dispendiosa quando se trata de vários computadores. E um servidor de backup pode facilitar este trabalho com a regularidade na execução das cópias de segurança, podendo-se programar o servidor para efetuar cópias de segurança diárias, semanais e mensais, a uma determinada hora, em função das necessidades. E pensando na segurança e integridade de dados de uma empresa que o tema foi escolhido para o desenvolvimento do projeto de Trabalho de Conclusão de Curso (TCC) que tem como o objetivo ajudar em um problema sério na informática que é a segurança de dados empresariais, é que a equipe resolveu implementar um servidor inteligente para esse processo de cópia dos arquivos na empresa sendo que com a implementação do mesmo, a empresa ficará tranqüila e mais segura com relação a perda de dados de seus usuários por causa de prováveis defeitos técnicos nos equipamentos (computadores). Na Empresa Esportiva Companhia Athlética Belém há um problema com o sistema de backup, onde o mesmo é realizado através de um programa instalado em todas as máquinas dos usuários de informática no setor administrativo, sendo que nesse programa é definido um 1 horário para que essas cópias de segurança dos dados seja realizado para os hds externos instalados em outra máquina da rede. Mas, se por acaso o aplicativo instalado na máquina deixar de ser iniciado com o sistema, ou até mesmo o programa ser danificado por algum motivo específico, o backup não será realizado e se por ventura o computador vier apresentar algum problema técnico o usuário perderá seus arquivos administrativos causando sérios problemas para a empresa. Então o sistema que será desenvolvido nesse projeto facilitará em grande escala esse procedimento, sendo que o mesmo não necessitará instalar nenhum software nos computadores clientes e o servidor em questão se encaminhará de fazer todos os procedimentos para os arquivos sejam salvos. Ajudando então a empresa tanto em casos de auditoria interna como da própria segurança de seus dados internos que não podem por hipótese alguma perder dados sensíveis. II. METODOLOGIA A metodologia do projeto consiste na seguinte seqüência: primeiro realizar uma pesquisa bibliográfica relacionada ao tema escolhido, com o referencial teórico objetivo, a linguagem de programação que será utilizada no projeto será estudada e analisada para que possa ser implementada no servidor. Com isso, o servidor será desenvolvido (configurado) onde o primeiro passo é a instalação do sistema operacional Linux na versão Debian 5.0 (Sistema Básico) e seus devidos pacotes atualizados. Após essa instalação começará então a parte da programação do sistema Unix (Shell), onde serão criados vários scripts para que a cópia dos dados dos usuários da empresa seja realizada de forma automática e eficiente. Para que essa programação seja objetiva será preciso coletar e analisar alguns dados da empresa assim como os horários (não comerciais) que os computadores ficarão ligados, para que esse procedimento de backup seja realizado de forma automática, os IPs dos computadores e as pastas e arquivos a serem salvos. Após essa coleta de dados (requisitos) a programação dos scripts será realizada e implementada no servidor. E por fim, o protótipo entrará na fase de testes e revisões para reparos de possíveis erros, para que assim o mesmo seja apresentado e entre em modo de operação. III. REVISÃO DE LITERATURA A. O Sistema Linux O Linux é um sistema operacional criado em 1991 por Linus Torvalds na universidade de Helsinki na Finlândia. É um sistema Operacional de código aberto distribuído Graduandos do Curso de Engenharia da Computação. Instituto de Estudos Superiores da Amazônia – IESAM, Avenida Gov. José Malcher, 1148 - Nazaré – Belém. Endereço eletrônico: [email protected], [email protected], [email protected]. 2 Professor e Orientador, Endereço eletrônico: [email protected]. gratuitamente pela Internet. Seu código fonte é liberado como Free Software (software livre), sob licença GPL, o aviso de copyright do kernel feito por Linus descreve detalhadamente isto e mesmo ele não pode fechar o sistema para que seja usado apenas comercialmente. Isto quer dizer que você não precisa pagar nada para usar o Linux, e não é crime fazer cópias para instalar em outros computadores, é inclusive incentivado a fazer isto. Ser um sistema de código aberto pode explicar a performance, estabilidade e velocidade em que novos recursos são adicionados ao sistema.[1] B. Sistema de Compactação de arquivos A compactação de arquivos sempre foi um recurso muito utilizado, sua origem se confunde com a própria história da computação. Através da compactação, pode-se aumentar consideravelmente a quantidade de arquivos e programas que podem ser gravados no mesmo espaço físico (figura 1). Um disco rígido de 200 Megabytes, por exemplo, pode guardar facilmente 300 MB, 400 MB ou até mais de arquivos compactados, um ganho considerável. Conforme os discos rígidos e outras formas de armazenamento foram crescendo em capacidade, o uso da compactação foi tornando-se menos necessário, mas este ainda é um recurso bastante utilizado. [1] Compactar arquivos é um simples processo de substituição. Por exemplo, cada caractere de texto ocupa 8 bits, o que nos dá um total de 256 combinações possíveis. O conjunto de caracteres ASCII (American Standard Code for Information Interchange) que significa no português Código Padrão Americano para o Intercâmbio de Informação, prevê o uso de todas as 256 combinações, porém, em geral utilizamos apenas letras, números e acentuação. Existem vários algoritmos de compactação, que prevêem vários tipos de substituições para diferentes tipos de arquivos. Porém, uma vez compactado, um arquivo qualquer deixa de ser utilizável. Para poder usar novamente o arquivo, é preciso fazer o processo inverso para ter novamente o arquivo original. [6] Um exemplo prático da eficiência da compactação de arquivos está sendo ilustrado na figura 1. Foram feitos alguns testes utilizando o compactador bz2 ao qual já vem acompanhado em distribuições Linux e foi utilizado para a compactação dos arquivos do servidor desenvolvido. Figura 1 – Exemplo prático da compactação de arquivos. [5]O compactador gzip é praticamente o compactador padrão do GNU/Linux, possui uma ótima taxa de compactação e velocidade. A extensão dos arquivos compactados pelo gzip é a .gz, na versão para DOS, Windows NT é usada a extensão .z. gzip. Quando um arquivo é compactado pelo gzip, é automaticamente acrescentada a extensão .gz ao seu nome. Esse compactador também reconhece arquivos compactados pelos programas zip, compress, compress -H e pack. As permissões de acesso dos arquivos são também armazenadas no arquivo compactado. Para o desenvolvimento do script do servidor foi escolhido o compactador bzip2, [5]pois é um novo compactador que vem sendo cada vez mais usado porque consegue atingir a melhor compactação em arquivos texto se comparado aos já existentes no entanto sua velocidade de compactação também é menor onde chega a quase duas vezes mais lento que o gzip. Foram feito testes referente à qualidade de compactação e o melhor desempenho que se teve foi o bzip2 que possui uma maior compactação em relação aos outros compactadores. Suas opções são praticamente as mesmas usadas nos outro compactador estudado e pode-se também usá-lo da mesma forma. A extensão dos arquivos compactados pelo bzip2 é a .bz2. Quando um arquivo é compactado por esse compactador nele é automaticamente acrescentada a extensão .bz2 ao seu nome e as permissões de acesso dos arquivos são também armazenadas no arquivo compactado. C. Política de backup O conceito de backup pode ser definido como o ato de copiar dados, de um dispositivo de armazenamento para outro, com o objetivo de recuperar dados caso existam problemas no futuro. Normalmente essa cópia é efetuada do disco rígido para tapes, DVDs (Digital Video Disc) que em português significa Disco Digital de Vídeo, ou outros discos. Nos dias de hoje, onde o papel é cada vez mais substituído por ficheiros digitalizados, é essencial para as empresas possuírem um sistema de cópia de arquivos confiável. [9] A determinação da política de backup passa pelo entendimento da aplicação, do seu ciclo de operação e dos seus volumes. Em função disso, deve-se definir a estratégia e a periodicidade de cópia de dados. Esse processo pode ser completo quando todos os dados são salvos, diferencial quando somente os dados que mudaram depois do último processo são salvos ou incremental quando os dados modificados entre a última cópia completa e cada incremental são salvos, pode se entender como Backup Cumulativo. Estas três estratégias determinam tempos muito diferentes para realizar essas cópias, mas, principalmente afetam o tempo de recuperação de dados. Por exemplo, a cópia mais rápida sempre será o diferencial, mas a operação de recuperação, dependendo do que se perde envolverá muito mais volumes de armazenamento. Entretanto, pode ser uma alternativa muito atraente quando se tem um grande volume de atualização de dados. Dependendo do volume de dados que eles são modificados o incremental pode ser uma alternativa muito atraente, conciliando velocidade e simplicidade. [9] D. Linguagem Shell Script Shell Script é uma poderosa ferramenta de automação de instruções. Com um arquivo de texto executável o usuário ou sistema é capaz de executar uma seqüência de operações, instruções e testes. Usos mais convencionais e comuns são em executáveis de instalação/configuração e para geração de relatórios procedimentos de cópias de segurança de arquivos e análise destes. Qualquer outra seqüência de instruções, utilizada com regularidade e que possa ser automatizada pode ser implementada em Shell Script. Os scripts podem ser definidos como arquivos executáveis, com instruções definidas, conhecidas e claras, que são executadas por um interpretador. PHP e arquivos de lote do Windows (bach) são outros exemplos de script. Scripts possuem seqüências de instruções e funções que são executadas em série pelo interpretador, de forma muito similar a qualquer programa. Shell pode ser definido como o interpretador de instruções e comandos, no nesse caso, do Linux. Quando o usuário ou sistema executa qualquer comando, o Shell é responsável pela correta interpretação deste. Por isso que ele é conhecido como interpretador de comandos. Shell Script facilita consideravelmente a vida e trabalho do administrador do sistema e de qualquer outro usuário. Automatização de tarefas é refletida em aumento de velocidade e facilidade. Ao invés de copiar e colar 30 vezes o e-mail para todos os destinatários, ou utilizar um programa gráfico de mala-direta, pode ser executado um Shell Script: • Cria um arquivo texto com a mensagem padrão e assinatura; • Cria um arquivo texto com nome dos destinatários; • Cria um script que lê os nomes um a um do arquivo texto e para cada um anexa a mensagem do outro arquivo texto, após utiliza uma função tipo send-mail. Shell Script pode ser considerado uma linguagem de programação, porém para ambientes Linux. Principalmente pela sua intimidade ao sistema (Linux). Pois não são tão rápidos em execução como programas compilados. Obviamente esta diferença de velocidade não é algo comprometedor a qualquer aplicação, apenas casos específicos, normalmente, aplicativos de maior porte e principalmente, é muito mais rápido que a execução manual dos comandos. Shell Script possui características muito interessantes: • É de terminologia e funções nativas ao usuário Linux, pois utiliza comandos do mesmo; • Fácil e lógica compreensão; • É editado como qualquer arquivo texto, em um editor de textos padrão; • Pode possuir qualquer extensão, mas o ideal é a extensão .sh; • Facilidade, organização e velocidade na execução de tarefas; • Pode ser distribuído e corrigido, no caso de BUGs, por toda a comunidade Linux; • Não necessita de depurador, e no caso de erros de sintaxe, basta apenas editar e salvar novamente o arquivo, sem necessidade de compilação; • Pode fazer qualquer coisa possível com comandos, como por exemplo: Ler e gravar arquivos, conexão com endereços externos, envio de e-mails, etc; • Filtros realmente poderosos, principalmente quando combinado com awk; • Suporte a funções. E. Samba O samba é um software livre bastante popular que permite compartilhar recursos, como impressoras, arquivos, etc. de um servidor Linux (entre outras plataformas suportadas) com clientes rodando Windows. Permite substituir um servidor Windows na maioria das situações, uma economia considerável. [7] Mesmo no Linux, podem-se acessar compartilhamentos de rede nas máquinas Windows da rede e criar novos compartilhamentos usando o Samba (figura 2). Ele é dividido em dois módulos: o cliente, usado para acessar os compartilhamentos, e o servidor, usado para compartilhar arquivos com as outras máquinas da rede.[6] O cliente Samba (composto pelo pacote smbclient) pode ser encontrado pré-instalado na maioria das distribuições, incluindo naturalmente o Kurumin. O servidor, por outro lado, tem uma configuração mais complicada e não é instalado por padrão, para evitar qualquer possibilidade de problemas de segurança. Figura 2 – Servidor samba (arquivos) O smbclient é uma espécie de biblioteca, que pode ser usada por outros programas. Existem diversos clientes Samba escritos nas mais variadas linguagens, mas o funcionamento de todos é muito similar. Ao acessar um compartilhamento no Windows XP e 2000 precisa-se fornecer uma conta e senha de usuário para acessar. Será aberta uma janela pedindo o login e senha do servidor. Opcionalmente, pode-se especificar o login de acesso diretamente no endereço, como em "smb://[email protected]", e também acessar as máquinas Windows especificando diretamente o nome, ao invés do IP, como em "smb://servidor". No projeto desenvolvido, foi utilizado o smbmount para definir (montar) as partições no servidor para que os arquivos possam ser copiados. F. ISO (International Organization for Standardization) [11]A ISO é uma Organização Internacional de Normalização que é não governamental e está presente em cerca de 120 países. Ela possuiu diferentes padrões em vários modelos ou certificações como, por exemplo, ISO 9000 e ISO 9001. Sua função é promover a normalização de produtos e serviços, utilizando determinadas normas, para que a qualidade dos produtos seja sempre melhorada. No Brasil, o órgão que representa a ISO chama-se ABNT (Associação Brasileira de Normas Técnicas) A ISO 9000 é um modelo de padronização. A organização deve seguir alguns passos e atender alguns requisitos da ISO 9001 para serem certificadas, dentre esses requisitos podemos citar: a padronização de todos os processos chaves do negócio, os processos que afetam o produto e conseqüentemente o cliente; o monitoramento e medição dos processos de fabricação para assegurar a qualidade do produto/serviço, através de indicadores de performance e desvios; implementar e manter os registros adequados e necessários para garantir a rastreabilidade do processo; a inspeção de qualidade e meios apropriados de ações corretivas quando necessário; e a revisão sistemática dos processos e do sistema da qualidade para garantir sua eficácia, entre outros. IV. FUNCIONAMENTO DO SISTEMA O funcionamento do sistema que foi desenvolvido funciona conforme a figura 3, que é a utilização de um servidor de arquivos que possui um script na linguagem em shell que verificar se os computadores estão ligados e realizar processo de copia dos arquivos que estão em pastas compartilhadas protegidas por senha nos computadores dos usuários de informática da empresa. Figura 3 – Funcionamento do sistema. 1 – Servidor de backup: é responsável pelo armazenamento das cópias de segurança dos arquivos de todos os usuários de informática da empresa. Através de um script implementado no servidor, o backup diário dos arquivos será feitos assim que a máquina for ligada. 2 – Hosts (Computadores): são os computadores dos usuários que serão feito essas cópias de segurança. Nesses computadores, há uma pasta compartilhada com todos os arquivos que precisam ser copiados. 3 – Switch Gerenciável: é responsável pela interligação e gerenciamento da rede, para que se tenha uma maior estabilidade na hora do processo de backup. No sistema em desenvolvimento será criado um script no servidor que fará com que o host quando ligado envie os arquivos (pré-definidos) em pastas públicas para o servidor, sendo que esse procedimento será realizado de forma automática assim que a máquina estiver ligada no corrente dia. V. RESULTADOS OBTIDOS A. Instalação do Sistema Operacional Debian 5.0 Servidor Primeiramente, foi instalado o sistema operacional Debian na versão 5.0, pois é a versão estável mais recente. A configuração do computador utilizado para esse desenvolvimento foi a seguinte: Processador Intel core2duo, 4gb de memória, disco rígido de 500gb, placa de vídeo Gforce Nvidia 512mb. O sistema foi atualizado com os pacotes de segurança mais recentes. Para que o servidor consiga visualizar todas as máquinas da rede Windows foi necessário a instalação e configuração do Samba no servidor com autenticação fornecendo usuário e senha para que possa ser transferido o backup através do protocolo SSH. B. Desenvolvimento do Script de Backup utilizando a linguagem Shell O script foi desenvolvido em Shell, que é uma poderosa linguagem de programação na qual utiliza automação de instruções, é também muito reconhecida pelos usuários da plataforma Linux e possui algumas estruturas presente nas outras linguagens de programação em que os outros usuários conhecem, assim como as estruturas de decisão (If), estruturas de repetição (while e for), funções e argumentos definições de variáveis e escopos delas. Para a programação do script foi necessária criar um arquivo na extensão .sh, onde o mesmo foi salvo no diretório raiz: /usr/local/bin no qual encontra-se todos os arquivos de configuração do script. O script será executado no servidor todos os dias através de um agendador de tarefas do Debian 5.0 chamado Crontab. Assim que o script é executado no servidor, o mesmo só deixará de ser executado quando todas as máquinas da rede forem becapeadas com sucesso. O script funciona da seguinte maneira: primeiramente é feito uma declaração da data e hora em que o script vai salvar o nome do arquivo atual de backup no servidor, depois o mesmo busca um arquivo de texto temporário com o nome de todas as máquinas da empresa que estão atreladas ao IP, no qual se encontra localizado no diretório do servidor: /usr/local/bin, sendo que antes da criação do arquivo texto é necessário configurar um arquivo chamado hosts no debian 5.0 que está localizado em: /etc/hosts. Para que o script possa saber futuramente qual computador já foi feito ou ainda falta fazer o procedimento. Em seguida, é feito a declaração das variáveis que serão utilizadas na estrutura da programação que será realizado através da implementação de um laço de repetição com a condição de parada somente quando todas as máquinas da rede forem ligadas e tiverem sido becapeadas. Antes dos arquivos serem enviados para o servidor, o mesmo atribui uma partição samba utilizando a ferramenta smbmount com criptografia para uma maior segurança do sistema, depois disso, é feito uma compactação dos arquivos que se encontram em uma pasta padrão nos hosts (computadores) da rede e então os arquivos são enviados para o servidor. Ao finalizar estes procedimentos, um email é enviado para o administrador do sistema informando que os processos foram realizados com sucesso. E com isso o script é novamente executado para que possa efetuar o backup dos outros computadores da empresa (ver figura 4). O fluxograma a seguir demonstra o funcionamento do script de backup. Figura 5 – Cenário do processo de backup do script em diagrama. Figura 4 – Fluxograma da programação do script de backup no servidor. C. Execução do Script de Backup Após o desenvolvimento por completo do script, foi definido que o mesmo seja executado uma vez ao dia, todos os dias às 9 horas através do agendador de tarefas do debian 5.0 chamado crontab. Contudo o script foi executado e testado utilizando apenas três máquinas ligadas em uma rede doméstica, podendo, no entanto ser configurado mais outras máquinas modificando (acrescentando ou excluindo) apenas as linhas do arquivo texto. Esses procedimentos servem então para observar o funcionamento correto do sistema (figura 5). Na empresa Companhia Athletica Belém, o script desenvolvido foi configurado em um servidor de arquivos fornecido pelo TI no qual foi configura para efetuar a cópia de segurança de cinco computadores (TI, vendas, gerência, financeiro e recepção) e até o presente momento os resultados foram muito positivos, não havendo quaisquer falhas quanto ao procedimento correto de backup. Na figura em forma de diagrama representada a seguir (Figura 5) é possível ter uma noção mais abrangente do projeto desenvolvido para a empresa em questão. Nesse script a execução é de forma seqüencial haja vista que a própria linguagem trabalha dessa maneira. Os comandos são executados um de cada vez. D. O Funcionamento do Servidor na Empresa Segundo Inayan Diego Bianco gerente e coordenador de TI (Tecnologia da Informação) da empresa Companhia Athlética Belém, o script que foi desenvolvido vai ser muito importante para o processo de backup dos arquivos da empresa. Pois o sistema anterior que realizava esse procedimento possuía muita falha e já ocorreu um caso de muitos arquivos importantes serem perdidos por causa de um problema de hardware do computador do usuário e os arquivos não terem sido copiados corretamente no que dificultou a restauração dos mesmos e, no entanto foi perdido trabalho de aproximadamente três anos. Como a empresa é certificada ISO 9002 e possui 14 unidades em todo Brasil, esse servidor desenvolvido pelos alunos do 4º ano do IESAM será avaliado conforme as especificações da certificação e tem grandes chances de ser implantado em outras unidades. Apesar do mesmo está funcionando em teste com apenas cinco computadores, o resultado já foi muito bem aceito pelos administradores da empresa haja vista que até o certo momento não houve algum tipo de erro quando ao processo das cópias de segurança. É também importante ressaltar que a empresa pensa em adquirir novos servidores para que a implantação do script seja integrado para fazer backup dos servidores de Proxy, Firewall, DNS (Domain Name System) e Banco de Dados que no caso trata-se do Oracle. VII. CONCLUSÃO Através de estudos realizados, pode-se concluir que com o término do projeto podemos adquirir uma grandeza em nossos conhecimentos relacionados a softwares livres, assim como Debian 5.0, Samba. Conseguimos também ter uma maior noção da importância dos compactadores e a eficiência em se ter um servidor de backup na empresa pelo aspecto de uma maior segurança dos dados empresariais. Com este projeto não será mais preciso a presença de um funcionário para a realização dessas cópias de segurança dos arquivos de usuários, pois este agora será feito automaticamente e de forma inteligente. Assim, eles serão realizados com mais rapidez e eficiência, além de possuírem em seu banco de dados um limite máximo para o armazenamento de informações, evitando sérios problemas para a empresa na hora das auditorias que ocorrem freqüentemente em empresas que possuem certificação como ISO 9001 e ISO 9002. Que são certificações muito rigorosas no aspecto detalhista e procuram o máximo de perfeição na realização das tarefas diárias da empresa. VII. REFERÊNCIAS [1] L. A. Siqueira. Coleção Linux Pro. Certificação LPI-1. 2ª Edição. 2008. [2] C. N. Julio. Brasport. Programação Shell Linux. 2008. [3] H. Craig.. Linux: Servidores de rede. Ciência Moderna. 2004. [4] F. J. Mozart. Guia essencial do backup. Digerati Books. 2007. [5] G. M. da Silva. Guia Foca GNU/Linux. Disponível: http://focalinux.cipsga.org.br, 2009. [6] C. E. Morimoto, Guia do Hardware 2002. Disponível: http://www.guiadohardware.net, 2009. [7] Samba 4. Disponível: http://www.samba.org/, 2009. [8] A. Simões. SSH em Linux e Unix. LPIC Certified 2008. Disponível: http://www.computernetworks.com.br/wordpress/2009/10/05/ ssh-emlinux-e-unix/, 2009 [9] R. da Informática. Conceitos Básicos da Informática. Disponível: http://www.ramosdainformatica.com.br/art_recent es01.php?CDA=780, 2009. [10] J. Virgilio. Viva o Linux - Shell Script. Disponível: http://www.vivaolinux.com.br/artigo/O-que-e-ShellScript/?pagina=3, 2009. [11] Oficina da Net. ISO 9000 – Conceitos. Disponível: http://www.oficinadanet.com.br/artigo/491/iso_9000_-_conceitos