terça-feira, 6 de agosto de 2013

Backup de arquivos das estações de sua rede com Samba PDC

Introdução

Caso não tenha conhecimento básico de Samba e PDC, leia um artigo que publiquei há algum tempo:

Em redes com Samba PDC, onde devido a falta de recursos de hardware e rede os arquivos pessoais dos usuários (profiles) são gravados localmente nas estações e não no servidor, é interessante criar um sistema de backup e orientar os usuários a executa-lo periodicamente, para que os arquivos pessoais não fiquem salvos apenas no próprio micro do usuário.

Esse artigo ensina a configurar o Samba para que ele crie na área de trabalho de todos os usuários o ícone de um script de backup, que ao ser executado, salva as pastas pessoais do usuário em um arquivo compactado no servidor PDC ou em um servidor de backup.

Orientando os usuários a executarem o backup uma vez por semana ou todos os dias por exemplo, o risco de perder informações caso o disco rígido de uma estação dê problema (como já aconteceu comigo, o que me motivou a escrever esse artigo) é anulado, você terá um backup dos principais arquivos. Existe ainda a possibilidade de se usar o Agendador de Tarefas do Windows para automatizar definitivamente o processo de backup, o que não tratei neste artigo.

Em si, o processo é simples (temos em vista aqui que você já tem um Samba PDC em execução, caso contrário leia o artigo citado no início). Primeiro configuramos um compartilhamento que guardará todos os backups, em seguida escrevemos o script de backup e por último editamos os scripts de logon dos usuários, para que a estação copie o executável de backup para a área de trabalho do usuário.

O compartilhamento

O compartilhamento para backup precisará ter bastante espaço, dependendo principalmente da quantidade de usuários. Em minha rede com 30 usuários, os backups estão consumindo 10GB. Pode parecer pouco, mas é que configurei no script filtros para não serem salvos arquivos de música, fotos, vídeos, etc, o que veremos adiante. Outro fator é a utilização do Rar como compactador, o Winrar, apesar de não ser open source, possui um versão free e foi adotado aqui pelo seu grande poder de compressão e pela facilidade de operá-lo em prompt de comandos, o que ajudou bastante o desenvolvimento do script.

Você pode preferir em configurar esse compartilhamento no próprio PDC, como eu fiz, ou em outro servidor, de preferência uma máquina exclusiva para essa função, um Pentium MMX com 32mb de memória já serve, desde que tenha espaço em disco suficiente para suportar todos os backups de sua rede. A vantagem é que usando um computador separado você não compromete o desempenho do PDC nem seu uso de disco, se bem que veremos adiante que o desempenho não é tão comprometido, já que a partir da segunda vez que o backup é executado, o script apenas sincroniza os novos arquivos e os arquivos alterados.

Vamos ao compartilhamento. No smb.conf, adicione ao arquivo:

[bkps]
        path = /mnt/sda7/bkps
        read only = No 
        veto files = /*.mp3/*.wma/*.wmv/*.avi/*.mpg/ 
        create mask = 0700 

  • "bkps" é nome do compartilhamento;
  • O "path" é o caminho da pasta no servidor;
  • "Veto Files", arquivos que serão bloqueados por sua extensão;
  • E a máscara 0700 faz com que tenha permissão de escrita e leitura somente quem criou o arquivo, assim ninguém poderá ver os arquivos de backup dos outros usuários. 

O script de backup

O próximo passo é escrever o script de backup. Antes de começar, instale o WinRAR, encontrado em:
em uma máquina com Windows.

Do WinRAR usaremos para o nosso script o arquivo "rar.exe", encontrado na pasta onde ele foi instalado. Copie esse arquivo para a sua pasta "netlogon", que está no servidor.

Em seguida crie dentro da pasta "netlogon" um arquivo chamado lista.txt e dentro dele, coloque uma abaixo da outra as extensões dos arquivos que você vai querer que o script ignore. Arquivos com essas extensões não serão salvos, para evitar que filmes, músicas, etc, que em muitos casos são desnecessários, ocupem espaço em seu servidor. Segue um exemplo:

*.exe
*.jpg
*.mp3
*.wma
*.wav
*.wmv
*.avi
*.mpg
*.bmp
*.pif
*.png
*.tif
*.gif
*.psd
*.pa
*.mp4
*.html
*.htm
*.ini
*.swf
*.tmp
*.temp
*.dll
*.dat
*.DAT
*.log
*.xml
*.lnk
*.rtm
*.bin
*.css
*.js
*.chm
*.jsp
*.pdf
*.sqm

Agora vamos ao script propriamente dito, crie ele com o nome backup.bat dentro da pasta "netlogon".

cd %userprofile%
copy \\fileserv\netlogon\rar.exe /y
copy \\fileserv\netlogon\lista.txt /y
md \\fileserv\bkps\%username%
rar a -r -u -as \\fileserv\bkps\%username%\%username%.rar savec * -x@"%userprofile%"\lista.txt

Adapte o nome NetBios do servidor, que neste caso é "fileserv", ou substitua pelo IP dele.

Seguindo os passos do script, primeiro ele abre a pasta pessoal do usuário através da variável global "%userprofile%", por exemplo a "C:\Documents and Settings\tiago" do usuário Tiago. Depois copia o executável do Rar e a lista de extensões para este diretório.

Em seguida cria uma pasta com o nome do usuário dentro do compartilhamento "Bkps". A última linha executa o Rar com parâmetros de sincronização salvando toda a pasta pessoal (Meus Documentos, Desktop, Configurações Locais, etc.) do usuário em um arquivo .rar dentro do compartilhamento de backup.

A vantagem da sincronização é que na segunda vez que o backup for executado ele apenas vai copiar os arquivos novos que o usuário criou e os que ele alterou, acelerando bruscamente o processo do backup.

No exemplo do usuário Tiago, após processado, você vai encontrar dentro do compartilhamento "bkps" uma pasta tiago e dentro dela um arquivo tiago.rar, disponível para leitura e escrita apenas para o próprio usuário.

É possível adicionar muitas funcionalidades a este backup. Por exemplo a remoção de arquivos temporários de internet e arquivos recentes. Cabe a você adaptá-lo seguindo as regras do prompt de comandos do Windows. 
 
 

Configurando o Netlogon

Nosso último passo é configurar o script de netlogon dos usuários para que ele copie o arquivo que criamos acima para a área de trabalho do usuário. Em meu smb.conf a tag "Logon Script" está definida como todos.bat.

O arquivo todos.bat, encontrado dentro do "netlogon" no PDC, é o script que todos usuários executam quando fazem logon. A maioria dos tutoriais do Samba ensina você colocar "%u.bat" ou algo assim, para que você defina um script de logon diferente para cada usuário. Eu faço diferente. O que tem no meu todos.bat, como a configuração do proxy e do antivírus (como citado no outro artigo que publiquei), todos executam, e no final dele eu tenho a linha "\\fileserv\netlogon\%username%.bat", que chama o script individual de cada usuário, assim tenho definido um script que todos executam e um individual com o nome de cada usuário que será executado somente por ele mesmo.

Vamos então editar o todos.bat. Se você usa uma configuração diferente, talvez terá que editar todos os arquivos de logon ou aqueles que desejar. Adicione ao arquivo:

cd %userprofile%\Desktop
copy \\fileserv\netlogon\backup.bat /y

Conclusão

Pronto. Reinicie o seu servidor Samba e na próxima vez que os usuários efetuarem logon, o backup.bat já vai estar na área de trabalho. Basta que seja clicado duas vezes, a tela do prompt vai correr na tela e quando o backup terminar ela simplesmente vai fechar. Mensagens para personalização e inúmeras outras funções podem facilmente serem acrescentadas ao script, servindo este, apenas como um exemplo muito simples, porém já funcional.

O artigo pode parecer confuso, por isso, estarei tirando eventuais dúvidas.

Nenhum comentário:

Postar um comentário