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 apartir de onde espelhar.
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 naturalmente para as várias versões do FreeBSD, e para as várias arquiteturas.
Você pode utilizar um programa de espelhamento de FTP para obter os arquivos. Existem muitos programas disponíveis, os quais são amplamente utilizados tais como:
alguns usam mesmo o ftp/wget
O ftp/mirror é muito popular, mas parece ter alguns inconvenientes, ele é escrito em perl(1), e possui alguns problemas reais para espelhar grandes diretórios como o site FreeBSD. Existem rumores de que a versão atual corrigiu isso ao permitir que seja especificado um algoritimo diferente para comparar a estrutura de diretórios.
Em geral o FTP não é bom para tarefas de espelhamento. Ele transfere o arquivo inteiro se ele for alterado, e não cria um único stream de dados o qual o beneficiaria de uma grande janela de congestão TCP.
Uma forma melhor de espelhar uma á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 adotá-lo. Você pode ter um pouco de trabalho para encontrar um servidor que permita o acesso via rsync.
Nota: Uma vez que o número de clientes rsync terão um impacto significativo no servidor, muitos administradores impõe limitações no número de acessos simultâneos aos seus servidores. Para um espelhamento, 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 excessão para o seu servidor (uma vez que você é um site espelho).
A linha de comando para espelhar o FreeBSD pode ser parecida com essa:
% 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/, sobre 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, assim você não deve omitir o diretório alvo. Você também pode desejar configurar um script de trabalho o qual seria executado como um comando pelo cron(8), para automatizar o processo.
Poucos sites, incluindo o ftp-master.FreeBSD.org, oferecem acesso via CVSup para espelhamento da área de FTP. Você deve instalar um cliente de cvsup, preferencialmente a partir do port net/cvsup (também visto na Seção 2.4.4). Um exemplo de arquivo supfile para fazer o espelhamento a partir do ftp-master.FreeBSD.org se pareceria com isto:
#
# 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
Parece que o CVSup seria a melhor forma de espelhar o arquivo em termos de eficiência, mas infelizmente ele está disponível em apenas alguns sites.
Nota: Por favor consulte a documentação do CVSup, como por exemplo a cvsup(1) e considere o uso da opção
-suma vez que ela pode reduzir em muito o trabalho a ser realizado.
De novo você possui várias possibilidades para realizar esta tarefa, mas o mais recomendado é utilizar o CVSup.
O CVSup já foi descrito em algum detalhe na Seção 2.4.4 e na Seção 3.1.3.
Abaixo você encontra um exemplo de supfile para realizar esta tarefa:
#
# FreeBSD CVS supfile from master server
#
*default host=cvsup-master.FreeBSD.org
*default base=/usr
*default prefix=/pub/FreeBSD/development/FreeBSD-CVS
*default release=cvs
*default delete use-rel-suffix
*default umask=002
# If your network link is a T1 or faster, comment out the following line.
#*default compress
cvs-all
Você também deve dar uma olhada em /usr/share/examples/cvsup.
Nota: Por favor não esqueça de considerar a dica mencionada na nota acima.
Geralmente não se recomenda o uso de outros métodos que não o CVSup. De qualquer forma, vamos descrever rapidamente como fazer. Uma vez que a maioria dos sites oferecem 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
e talvez HTTP
Se você encontrar um site que suporte, você pode utilizar o net/sup. Mas ele é inferior ao CVSup e foram as suas deficiências que levaram o John Polstra a desenvolver o CVSup, então o seu uso é claramente não recomendado.
Importante: Você não deve utilizar o AnonCVS para espelhar o repositório CVS, uma vez que o CVS não permite que você acesse o repositório propriamente dito (arquivos ",v"), mas sim apenas as versões limpas dos módulos.
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, provavelmente será tão simples quanto executar:
% cvs -d /home/ncvs co www
e um cronjob, o qual executa um cvs update -d -P periodicamente, talvez imediatamente depois de cada atualização do seu repositório. Naturalmente, os arquivos necessitam ficar 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á abordada neste artigo.
Nota: Para que o site web fique disponível, você precisa executar o comando make(1) dentro do diretório principal do www. Este comando irá criar os arquivos *.html para serem visualizados via web. Para que o comando possa ser executado com sucesso, o port textproc/docproj precisa estar instalado.
Se você não possui um repositório local, você pode utilizar o CVSup para manter uma cópia atualizada das páginas www. Um exemplo de supfile 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
Não recomendamos o uso do ftp/wget ou de outras ferramentas de espelhamento web.
Uma vez que a documentação é fortemente referênciada a partir das páginas web, recomenda-se que você também espelhe a documentação do FreeBSD. Entretanto, isto não é tão trivial quando espelhar as páginas www isoladamente.
Antes de mais nada, você deve obter os fontes da documentação, e de novo o método preferencial é via CVSup. Aqui está um exemplo do supfile correspondente:
#
# 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ê terá que instalar diversos ports. Mas você está com sorte, pois existe um meta port: textproc/docproj que faz o trabalho para 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 /etc/defaults/make.conf se você não possuir um), e verifique a variável DOC_LANG . Agora você já está provavelmente pronto para executar o comando make no seu diretório dos fontes da documentação (por padrão /usr/share/doc) para construí-la. De novo, você precisa torná-lo acessível através do seu servidor web e certifique-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 fdp-primer. Por favor leia este documento, especialmente se você está tendo problemas para contruir a documentação.
Cada site espelho deve ser atualizado regularmente. Você certamente irá precisar de alguns scripts de trabalho, os quais serão executados pelo cron(8), automatizando o processo de atualização. Uma vez que cada administrador implementa estes scripts da sua própria maneira, nós não podemos dar instruções específicas sobre como proceder. Mas de uma forma geral o processo de implementação poderia ser resumido como:
Coloque os comandos para executar a sua aplicação de espelhamento em um script. Recomenda-se utilizar um script simples em /bin/sh.
Adicione alguns redirecionamentos para arquivo das mensagens dos programas, de forma que possa usar o mesmo com a finalidade de diagnóstico de problemas.
Teste se o seu script funciona, verifique o arquivo de log.
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 a 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 estágio das distribuições -- garantindo que todos os site espelhos oficiais possuam todos os arquivos necessários de uma distribuição, no dia em que a mesma é liberada.
Aqui estão alguns dos agendamentos recomendados para a atualização de um site espelho:
Servidor FTP: diário
Repositório CVS: diário a horário
Páginas WWW: diário
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>.