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.
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.
Você pode utilizar um aplicativo de espelhamento de FTP para obter os arquivos. Alguns dos mais utilizados são:
ftp/mirror
ftp/ftpmirror
ftp/emirror
ftp/spegla
ftp/omi
ftp/wget
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.
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, “Rsync (opcional para o conjunto de arquivos
do FTP)”. 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.
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.
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, “CVSup (desejado para repositórios CVS)”). Abaixo você encontra um
exemplo de arquivo supfile
pronto para
uso com o
ftp-master.FreeBSD.org
:
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.
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.
Existem várias formas de se espelhar o repositório CVS. O CVSup é o método mais comum.
O CVSup foi descrito com algum detalhe na Seção 2.4.4, “CVSup (desejado para repositórios CVS)” e na Seção 3.1.3, “Espelhando com o CVSup”.
É 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.
Por favor não se esqueça de avaliar a sugestão mencionada na nota acima
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
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.
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:
A utilização do ftp/wget
ou de outras ferramentas
de espelhamento web (web-mirror
)
não é recomendado.
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:
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.
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.
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:
Coloque o comando para executar a sua
aplicação de espelhamento em um script. O
uso de um script simples em /bin/sh
é recomendado.
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 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:
Conjunto de arquivos do FTP: diária
Repositório CVS: horária
Páginas WWW: diária
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>.