De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Aldemari Borges
Data de Publicação: 02 de Julho de 2009
Esta proposta visa criar um sistema de backup baseado em Shell Script, além dos comandos nativos do Linux.
Vamos ao passos:
No servidor cliente(aquele que enviará seu próprio backup para o repositório remoto):
root@clienthost:~# adduser backscp
Obs: Colocar senha bastante difícil, já que este usuário existirá em todas as máquinas.
Obs: Há a possibilidade de restringir o acesso via ssh por hosts e users(ver manual do openssh server)
Afim de criarmos uma solução independente das chaves do host criadas em
/etc/ssh
, iremos criar uma chave específica para o usuário em questão.
Estas chaves se localizarão no ~.ssh
(diretório local do usuário backscp,
na pasta oculta .ssh
).
Digite o comando abaixo:
backscp@clienthost:~$ ssh-keygen
Tecle 'Enter' até a finalização do processo de criação como abaixo:
Generating public/private rsa key pair. Enter file in which to save the key (/home/backscp/.ssh/id_rsa): Created directory '/home/backscp/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/backscp/.ssh/id_rsa. Your public key has been saved in /home/backscp/.ssh/id_rsa.pub. The key fingerprint is: fc:d5:81:59:96:cb:a7:e7:81:19:93:39:30:41:01:b3 backscp@borges The key's randomart image is: +--[ RSA 2048]----+ | oo+o o. | | oo =. | | E =.+. | | . Bo..| | S . Bo | | . . o...| | . o.| | .| | | +-----------------+
O comando acima gerou uma chave criptográfica de 2048 bits, utilizando o algoritmo RSA.
Temos então:
backscp@clienthost:~$ scp .ssh/id_rsa.pub backscp@repositoriohost:~
No servidor remoto(REPOSITÓRIO):
com o usuário backscp
(como sugestão apenas):
backscp@repositoriohost:~$ mkdir ~.ssh backscp@repositoriohost:~$ cat id_rsa.pub »» .ssh/authorized_keys
PRONTO!!! Estabelecemos a relação de confiança entre as máquinas via ssh
Para testar:
No servidor remoto(repositoriohost) apague o ~/id_rsa.pub
No servidor cliente(clienthost) re-envie o arquivo do id_rsa.pub
:
scp .ssh/id_rsa.pub backscp@repositoriohost:~
Não deverá ser solicitada a senha, o arquivo deverá ser copiado de forma transparente.
OBSERVAÇÃO
Para cada clienthost (máquina que pretende-se backapear), deverá ser
adicionado ao arquivo autorized_keys
do servidor repositório
(cat id_rsa.pub >> .ssh/authorized_keys
)
Vantagens até o momento:
Poderíamos fazer mapeamentos NFS ou CIFS, no entanto, haveria sempre sessões
abertas no cliente/servidor. O que de certa forma, para redes maiores, poderá
afetar em alguns milisegundos. Com a solução de envio via scp
(secure copy),
apenas será aberta a sessão durante a sua real utilização.
Há a outra vantagem em relação a segurança, pois os dados trafegam criptografados.
Continuando.....
Criemos estes diretórios conforme abaixo em todas as máquinas clientes:
root@clienthost:~# mkdir -p /backup/log root@clienthost:~# chown -R backscp /backup
Abaixo o shell script sugerido para fazer as cópias de segurança nos servidores clientes:
#!/bin/sh # Script para realização de backup's completos # Por Aldemari Borges(aldemari@gmail.com» export PATH=$PATH:/bin:/usr/bin:/usr/local/bin # Definicao de data e horario DATA=`date +%a%d%m%y` HORA=`date +%Hh%Mm%Ss` # Máscara para o arquivo a ser gerado NOMESERVIDOR=portal # Diretório ou arquivo para ser 'backapeado' BACKORIGEM=/home/backscp/examples.desktop # Local remoto aonde os arquivos serão enviados(Lembre-se de criar o diretório de destino) BACKDESTINO=/home/backscp/$NOMESERVIDOR # Criação do pacote tar -zcf $NOMESERVIDOR.tar.gz $BACKORIGEM date » /home/backscp/log/$NOMESERVIDOR\-$DATA\-$HORA.log # Esta linha abaixo evita erros de manipulacao de horario no momento do backup mv $NOMESERVIDOR.tar.gz $NOMESERVIDOR\-$DATA\-$HORA.tar.gz # Copiando para o repositorio remoto scp $NOMESERVIDOR\-$DATA\-$HORA.tar.gz backscp@10.90.1.33:$BACKDESTINO # Remover arquivo local rm $NOMESERVIDOR\-$DATA\-$HORA.tar.gz
Para tanto, sugerimos a utilização do QuiXplorer:
backscp@repositoriohost:~# apt-get install apache2-php5 backscp@repositoriohost:~# cd /var/www backscp@repositoriohost:~# wget http://ufpr.dl.sourceforge.net/sourceforge/quixplorer/quixplorer_2_3_1.tar.bz2 backscp@repositoriohost:~# tar -zxvf tar -jxvf quixplorer_2_3_1.tar.bz2 backscp@repositoriohost:~# mv quixplorer_2_3_1 phpexplorer
Vamos criar um virtual host no apache para facilitar sua visualização:
backscp@repositoriohost:~# cd /etc/apache2/sites-available
Edite um arquivo e salve com o nome de phpexplorer, com o conteúdo abaixo(e suas respectivas alterações):
<VirtualHost *:80> ServerAdmin sysadm@seudomain.com.br DocumentRoot /var/www/phpexplorer ServerName phpexplorer.seudomain.com.br ServerAlias phpexplorer.seudomain.com.br ErrorLog /var/log/apache2/phpexplorer-error_log CustomLog /var/log/apache2/phpexplorer-access_log combined </VirtualHost>
Após isto, vamos inserir o novo subdomínio em nosso sistema, como abaixo:
backscp@repositoriohost:~# a2ensite phpexplorer backscp@repositoriohost:~# /etc/init.d/apache2 reload
OBS: Não equecer de fazer as modificações necessárias no servidor dns interno da sua rede.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários