3 Como espelhar o FreeBSD

Ok, agora você conhece os requisitos e sabe como oferecer os serviços, mas não sabe como começar. :-) Esta sessão explica como realizar realmente o espelhamento de várias partes do FreeBSD, que ferramentas utilizar e a partir de onde espelhar.

3.1 FTP

A área de FTP representa o maior volume de dados a serem espelhados. Ele inclui os conjuntos de distribuição os quais são requeridos para as instalações via rede, os ramos (branches) do sistema dos quais se tira snapshots a partir da árvore de código fonte, as imagens ISO para gravar CDs de instalação do sistema, um sistema de arquivos vivo, a árvore do ports, os distifiles (código fonte necessários para compilar o ports) e uma quantidade enorme de pacotes. Tudo, é claro, para as várias versões do FreeBSD, e para as várias arquiteturas.

3.1.1 Espelhando com FTP

Você pode utilizar um aplicativo de espelhamento de FTP para obter os arquivos. Alguns dos mais utilizados são:

O ftp/mirror era muito popular, mas parece ter alguns inconvenientes, como ele está escrito em perl(1) ele possui alguns problemas reais para espelhar grandes diretórios como os de um site espelho do FreeBSD. Existem rumores de que a versão atual corrigiu isso ao permitir que seja especificado um algoritmo diferente para comparar a estrutura de diretórios.

Em geral o FTP não é muito bom para tarefas de espelhamento. Ele transfere o arquivo inteiro se o mesmo for alterado, e não cria um fluxo único de dados do qual ele se beneficiaria no caso de ocorrer uma grande janela de congestionamento TCP.

3.1.2 Espelhando com o Rsync

A melhor forma de espelhar a área FTP é através do uso do rsync. Você pode instalar o port net/rsync e então utilizá-lo para sincronizar com o seu servidor de upstream. O rsync já foi mencionado na Seção 2.4.2. Uma vez que a disponibilização de acesso via rsync não é obrigatória, o seu site preferido de upstream pode não disponibilizá-lo. Você pode precisar gastar algum tempo procurando até encontrar um servidor que permita o acesso via rsync.

Nota: Uma vez que o número de clientes rsync gera um impacto significativo no servidor, muitos administradores definem limites para o número de acessos simultâneos aos seus servidores. Você deve consultar o responsável pelo servidor de upstream que você está utilizando, sobre as regras do servidor, e sobre a possibilidade dele abrir uma exceção para o seu servidor (uma vez que você é um site espelho).

A linha de comando para espelhar o FreeBSD será parecida com esta:

% rsync -vaz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/
         

Consulte a documentação do rsync, a qual está disponível em http://rsync.samba.org/, para conhecer as várias opções que podem ser utilizadas com o rsync. Se você sincronizar o módulo inteiro (ao contrário de apenas alguns subdiretórios), esteja ciente de que o módulo-diretório (normalmente "FreeBSD") não será criado, de forma que você não deve omitir o diretório alvo. Além disso, você pode desejar criar um script de trabalho para ser executado pelo cron(8), para automatizar o processo de espelhamento.

3.1.3 Espelhando com o CVSup

Alguns sites, incluindo o ftp-master.FreeBSD.org oferecem acesso via CVSup para espelhamento do conteúdo da área de FTP. Você precisa instalar um cliente CVSup, preferencialmente a partir do port net/cvsup. (consulte também a Seção 2.4.4). Abaixo você encontra um exemplo de arquivo supfile pronto para uso com o ftp-master.FreeBSD.org:


          #
          # FreeBSD archive supfile from master server
          #
          *default host=ftp-master.FreeBSD.org
          *default base=/usr
          *default prefix=/pub
          #*default release=all
          *default delete use-rel-suffix
          *default umask=002

          # If your network link is a T1 or faster, comment out the following line.
          #*default compress

          FreeBSD-archive release=all preserve
         

Ao que parece o CVSup seria a melhor opção para espelhar os arquivos em termos eficiência, mas infelizmente ele só está disponível em alguns poucos sites.

Nota: Por favor, consulte a documentação do CVSup, como por exemplo a cvsup(1) e considere o uso da opção -s. Esta opção reduz as operações de leitura e escrita para o seu disco rígido, assumindo que as informações gravadas sobre cada arquivo estão corretas.

3.2 Espelhando o repositório CVS

Existem várias formas de se espelhar o repositório CVS. O CVSup é o método mais comum.

3.2.1 Usando o CVSup

O CVSup foi descrito com algum detalhe na Seção 2.4.4 e na Seção 3.1.3.

É muito fácil configurar um site espelho com o CVSup. Basta instalar o port net/cvsup-mirror para que você tenha todos os programas necessários instalados, e para que todas as informações necessárias para a configuração do site espelho sejam coletadas.

Nota: Por favor não se esqueça de avaliar a sugestão mencionada na nota acima

3.2.2 Utilizando outros métodos

A utilização de outros métodos que não o CVSup geralmente não é recomendada. De qualquer forma, nós vamos descrevê-los rapidamente aqui. Uma vez que a maioria dos sites oferece o repositório CVS como parte da área de FTP, sob o caminho /pub/FreeBSD/development/FreeBSD-CVS, os seguintes métodos podem ser utilizados:

  • FTP

  • Rsync

  • HTTP

Importante: O AnonCVS não pode ser utilizado para espelhar o repositório CVS, uma vez que o CVS não permite que você acesse o próprio repositório em si (arquivos ",v"), permitindo o acesso somente as versões limpas dos módulos.

3.3 Espelhando as páginas WWW

A melhor forma é realizar um “check out” da distribuição www do servidor de CVS. Se você tem um mirror local do repositório CVS, isto será tão simples quanto executar:

% cvs -d /home/ncvs co www

e agendar uma tarefa no cron, que execute periodicamente o comando cvs up -d -P, imediatamente após a execução do processo que atualiza o seu repositório. É claro que os arquivos precisam ser colocados em um diretório disponível para acesso público via WWW. A instalação e configuração de um servidor web não serão abordadas neste artigo.

Se você não tem um repositório local, você pode utilizar o CVSup para manter uma “cópia atualizada” das páginas www. Um supfile de exemplo para esta tarefa pode ser encontrado em /usr/share/examples/cvsup/www-supfile, o qual irá se parecer com isto:


        #
        # WWW module supfile for FreeBSD
        #
        *default host=cvsup3.de.FreeBSD.org
        *default base=/usr
        *default prefix=/usr/local
        *default release=cvs tag=.
        *default delete use-rel-suffix

        # If your network link is a T1 or faster, comment out the following line.
        *default compress

        # This collection retrieves the www/ tree of the FreeBSD repository
        www
       

A utilização do ftp/wget ou de outras ferramentas de espelhamento web (web-mirror) não é recomendado.

3.3.1 Espelhando a documentação do FreeBSD

Uma vez que a documentação é referenciada em diversas páginas web, é recomendado que você também espelhe a documentação do FreeBSD. No entanto, isto não é tão trivial quanto o espelhamento das páginas www isoladamente.

Em primeiro lugar, você deve obter os fontes da documentação, e recomendamos que você faça isso preferencialmente via CVSup. Aqui está um exemplo de supfile para esta tarefa:


         #
         # FreeBSD documentation supfile
         #
         *default host=cvsup3.de.FreeBSD.org
         *default base=/usr
         *default prefix=/usr/share
         *default release=cvs tag=.
         *default delete use-rel-suffix

         # If your network link is a T1 or faster, comment out the following line.
         #*default compress

         # This will retrieve the entire doc branch of the FreeBSD repository.
         # This includes the handbook, FAQ, and translations thereof.
         doc-all
        

Então você precisará instalar alguns ports. Mas você está com sorte pois existe um meta-port, o textproc/docproj, para fazer o trabalho por você. Você precisa configurar algumas variáveis de ambiente, como por exemplo SGML_CATALOG_FILES. Também de uma olhada no seu /etc/make.conf (faça uma cópia do /usr/share/examples/etc/make.conf se você não possuir um), e verifique a variável DOC_LANG. Agora você provavelmente já está pronto para executar o comando make dentro do diretório com os fontes da documentação (/usr/share/doc por padrão) para construí-la. De novo, você precisa tornar os arquivos acessíveis através do seu servidor web, certificando-se de que os links apontam para o local correto.

Importante: A construção da documentação, assim como as diversas tarefas associadas ao processo, estão documentadas no FreeBSD Documentation Project Primer. Por favor, leia este documento, especialmente se você está tendo problemas para construir a documentação.

3.4 Com que frequência devo espelhar?

Todo site espelho deve ser atualizado regularmente. Você certamente irá precisar de alguns scripts para automatizar este processo de atualização com a ajuda do cron(8). Uma vez que praticamente cada administrador implementa este procedimento do seu próprio jeito, nós não temos como fornecer instruções específicas de como proceder. O processo poderia ser resumido em:

  1. Coloque o comando para executar a sua aplicação de espelhamento em um script. O uso de um script simples em /bin/sh é recomendado.

  2. Adicione alguns redirecionamentos para arquivo das mensagens dos programas, de forma que possa usar o mesmo com a finalidade de diagnóstico de problemas.

  3. Teste se o seu script funciona. Verifique o arquivo de log.

  4. Utilize o crontab(1) para adicionar o script ao crontab(5) do usuário apropriado. O qual deve ser um usuário diferente do usuário sob o qual o servidor de FTP é executado, desta forma não será permitido o acesso via FTP anônimo aos arquivos presentes na área de FTP, os quais não possuam permissões que possibilitem a leitura por todos os demais usuários. Isto é utilizado para a fase de “stage” das novas distribuições — garantindo que todos os sites espelhos oficiais possuam todos os arquivos necessários de uma distribuição, no dia em que a mesma é liberada.

Aqui estão alguns exemplos da periodicidade recomendada para atualização de um site espelho:

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.