A distribuição Fedora, que é a coleção de todos os arquivos relacionados ao Fedora, usa a árvore de diretórios como no Exemplo 1, “Árvore de diretórios Fedora”. Ela pode incluir várias versões do Fedora Core. O planejamento da árvore torna mais simples a eliminação de arquivos desnecessários ou indesejáveis. Quando você configurar um espelho, duplique esta árvore exatamente igual ou o mais semelhante possível. Se você duplicar a árvore, será mais fácil automatizar as atualizações noturnas.
fedora
+-- linux
+-- core
|-- 1
| ...
+-- 5
| +-- SRPMS
| +-- i386
| | +-- debug
| | +-- iso
| | +-- os
| | +-- Fedora
| | +-- SRPMS
| | +-- images
| | +-- isolinux
| +-- x86_64
+-- development
| ...
+-- test
| ...
+-- updates
+-- 1
| ...
+-- 5
| +-- SRPMS
| +-- i386
| +-- x86_64
+-- testing
+-- 1
| ...
+-- 5
+-- SRPMS
+-- i386
+-- x86_64
Exemplo 1. Árvore de diretórios Fedora
![]() | Convenções de nomes |
|---|---|
Ao longo do restante do documento, |
O diretório fedora/linux/core/5/ contém uma cópia de todos os arquivos originais da distribuição para o Fedora Core 5. Eles são os mesmos arquivos encontrados na versão em DVD e CD-ROM da distribuição. A subpasta arch/osFedora contém todos os arquivos que são necessários para a instalação, incluindo a coleção inteira de pacotes RPM. A pasta images contém cópias de algumas imagens de disquete ou CD-ROM para inicializar o sistema em modo de instalação ou reparo. A pasta fedora/linux/core/5/ contém imagens da versão em CD-ROM da distribuição.arch/iso
![]() | Pacotes RPM |
|---|---|
O RPM, originalmente o Red Hat Package Manager (Gerenciador de Pacotes Red Hat) e agora o RPM Package Manager (Gerenciador de Pacotes RPM), não é somente um formato de arquivo. RPM é também um sistema que registra e interconecta programas e informações de versão. O sistema RPM é muito popular e muitas outras distribuições Linux o usam também. Leia mais informações sobre o RPM em http://www.rpm.org/. |
As pastas SRPMS abaixo da hierarquia especifica de arquiteturas são atalhos que apontam para a pasta SRPMS principal da distribuição. Por exemplo, fedora/linux/core/2/i386/os/SRPMS é um atalho que aponta para fedora/linux/core/2/SRPMS.
Um espelho Fedora consiste ao menos das imagens ISO originais ou dos arquivos da distribuição. Se possível inclua ambos, contanto que você tenha espaço em disco e/ou largura de banda suficiente.
Se você já tem CD-ROMs de instalação da distribuição em bom estado, reduza seu consumo de banda e tempo gasto baixando arquivos, copiando os arquivos dos discos para seu servidor. Copie todos os arquivos de instalação do Disco 1 para a pasta fedora/linux/core/5/. Então copie todos os arquivos da pasta arch/osFedora de cada um dos discos de instalação restantes, para a pasta fedora/linux/core/5/ no servidor.arch/os/
Copie todos os arquivos da pasta SRPMS de cada disco "Fonte" (Sources) na pasta fedora/linux/core/5/SRPMS no servidor. Crie um atalho (link) na pasta os que aparece sob cada arquitetura. Siga este exemplo:
cd /var/www/mirror/fedora/linux/core/5/i386/os/Fedora
ln ../../SRPMS SRPMS
A documentação do anaconda, o programa de instalação do Fedora Core, chama esta estrutura de diretório de árvore expandida. Isto porque os dados de cada pacote de cada CD estão extraídos, ou expandidos, em uma larga árvore de diretórios com uma estrutura pré-determinada. O instalador anaconda atenta a está estrutura até um certo ponto.
Se você somente incluiu as imagens de CD, crie um espelho apropriado para serviços de instalação montando cada imagem de CD abaixo do diretório . Crie um diretório para cada CD, nomeando-os como arch/os/disc1, disc2 e assim por diante. Monte cada disco na pasta apropriada e adicione entradas no /etc/fstab para serem montados automaticamente em caso de um reinicio (reboot). Cada entrada ficará assim:
/caminho/i386/iso/FC5-i386-disc1.iso /caminho/i386/os/disc1 iso9660 defaults 0 0
A aplicação de instalação anaconda automaticamente detecta estas pastas e as usa sem maiores problemas. Além disso, ferramentas de configuração do sistema como system-config-packages também continuam funcionando normalmente quando apontadas para a pasta de ponto de montagem da imagem ISO.
Existem inconveniências ao usar imagens ISO de CD desta forma. Por exemplo, um único diretório não conterá a distribuição inteira dos pacotes RPM. Atalhos (links simbólicos) podem contornar este problema, mas as políticas de segurança do seu servidor podem não permitir isto. O Fedora Core também vem em imagens ISO no formato DVD, que é uma alternativa à esse problema. Usuários que não tem gravador de DVD, entretanto, não conseguem usar esta imagem para gravar discos para o seu próprio uso.
Você precisa somente de uma simples linha no /etc/fstab para montar a imagem ISO DVD do Fedora Core. A entrada fica assim:
/caminho/i386/iso/FC5-i386-DVD.iso /caminho/i386/os iso9660 defaults 0 0
Você pode omitir quase todas os subdiretórios da árvore que não planeja usar. Considere cuidadosamente o impacto da exclusão destas pastas. Os subdiretórios que você pode excluir do seu espelho incluem:
Antes de você excluir uma versão antiga, assegure-se de que isto não afetará de forma adversa alguns de seus usuários. Estes efeitos adversos podem ser causados de muitas maneiras. Por exemplo, o nível de suporte para determinado hardware as vezes muda entre uma versão e outra. Seus usuários talvez precisem executar tarefas relacionadas a programas, como por exemplo a construção de pacotes para diferentes versões do Fedora Core. Sempre esteja ciente das necessidades dos seus usuários durante o estágio de planejamento.
Se você não tem nenhuma máquina x86-64 para oferecer suporte, apagando estas pastas, elimina-se vários gigabytes de arquivos extras. Se você irá oferecer suporte a x86-64 posteriormente, então você deverá restaurar o espelhamento desses subdiretórios.
development (anteriormente "Rawhide").Esta pasta contém todos os últimos pacotes mais atualizados do Projeto Fedora. Se você participa do desenvolvimento ativo, você não deve eliminar este subdiretório. O desenvolvimento anda em passos rápidos e requer freqüentes atualizações para as últimas versões dos pacotes em desenvolvimento. Contudo, as freqüentes atualizações fazem que seu espelho baixe quantidades significativas de material durante o ciclo regular de atualizações.
testing.Estes subdiretórios contém atualizações que são sujeitas a testes públicos de garantia de qualidade, assim como as versões de teste e "pré-lançamentos" da distribuição Fedora Core. A pasta testing a baixo da árvore principal core é onde as versões de teste da distribuição, como o Fedora Core 5 Test3, são mantidas. (Usuários das distribuições de teste são freqüentemente direcionados a usar o subdiretório development para atualizações de pacotes.) A pasta testing abaixo de updates contém atualizações de pacotes que ainda não passaram pela fase de testes públicos.
debug.Estas pastas contém pacotes que permitem desenvolvedores e usuários habilidosos interpretarem dados criados quando um programa fecha inesperadamente ou encontra algum erro (bug). Se você participa ativamente no desenvolvimento do Fedora, você não deve eliminar estas pastas. Se você apagar este subdiretório, você ainda pode baixar pacotes individuais de acordo com sua necessidade, através de um site espelho público próximo.
SRPMS (e links aos mesmos).Estas pastas contém o código original de todos os pacotes binários RPM da distribuição. Você pode baixar estes pacotes individualmente, de acordo com sua necessidade para economizar espaço no seu espelho local.
A menos que seu site esteja próximo da gerência de configurações de estações de trabalho, você provavelmente não irá eliminar qualquer subdiretório de updates para as distribuições que você oferecer suporte. Estes locais contém pacotes com correções de erros (bugs), correções de segurança e atualizações de erratas que seus usuários provavelmente querem.
Encontre um espelho público para o Fedora Core olhando na página de espelhos do projeto principal, http://fedora.redhat.com/Download/mirrors. html. Uma vez que você tenha selecionado um site de espelho próximo, note quais serviços são oferecidos (FTP, HTTP e/ou rsync). Um espelho está geralmente servindo um grande número de usuários. Escolha horários fora de pico, quando possível, para efetuar download de uma grande quantidade de arquivos. Esteja ciente de quaisquer diferenças nos fuso-horários quando estimar os horários fora de pico.
Para efetuar download via HTTP ou FTP, use qualquer um dos comandos wget ou lftp. O comando wget analisa os subdiretórios recursivamente automaticamente e baixa a árvore de dados inteira com um simples comando. Entretanto, se você não tiver cuidado, é possível que se baixe muito mais dados do que o pretendido. Os seguintes comandos espelham a distribuição Fedora Core atual inteira:
cd /var/www/mirror
wget --mirror -np -nH --cut-dirs=2 http://mirror.example.com/pub/mirror/fedora/linux/core/5/
Note as opções usadas acima:
--mirror habilita a recursão (passando por todos os subdiretórios) e duplica os dados de tempo dos arquivos;
-np impede que o wget entre no diretório pai;
-nH impede que o wget escreva um diretório nomeado com o host (neste caso, );mirror.exemplo.com
--cut-dirs= suprime os primeiros nn diretórios no caminho. No exemplo acima, --cut-dirs=2 impede que o wget escreva a parte do caminho em seu espelho./pub/mirror
A mesma sintaxe funciona para ambos os espelhos principais HTTP e FTP. É possível que você possa baixar alguns arquivos estranhos se o site HTTP formatar suas páginas para navegação visual. Estes arquivos podem ser seguramente excluídos, mas retornam a cada atualização do espelho a menos que você use opções especiais para excluí-los. Veja as páginas de manual (man) do comando wget para mais informações.
O comando lftp funciona como o comando wget e espelha o índice do servidor HTTP ou FTP. O comando wget, entretanto, não exclui arquivos antigos localmente. Esta funcionalidade é importante para atualizar espelhos de repositórios, mantendo-os sincronizados com o espelho principal. Novos arquivos são criados e arquivos antigos são excluidos automaticamente no espelho principal freqüentemente.
O comando lftp sincroniza arquivos e diretórios a partir de uma máquina remota como o rsync, mas usa protocolos HTTP ou FTP. Use o seguinte comando para espelhar a distribuição do Fedora Core inteira com o lftp:
cd /var/www/mirror && \
lftp -c "open http://mirror.example.com/pub/mirror/linux/core/5/i386/ && \
mirror --delete --verbose"
O parâmetro -c executa um conjunto de instruções num processo lftp. Instruções são separadas com && para impedir o comando lftp de executar se o comando cd falhar. As instruções do comando lftp trabalham da mesma maneira. A sintaxe de instrução A && B é freqüentemente uma abreviatura para " se A retornar com sucesso, execute B." Uma explicação sobre os comandos do lftp seguem:
open conecta ao site e muda o diretório automaticamente.
mirror busca todos os arquivos e diretórios recursivamente no diretório atual. A opção --delete exclui todos o arquivos locais que não estão no diretório remoto. A opção --verbose imprime algumas informações na tela e é opcional.
O comando lftp abaixo mantém um cópia exata do diretório para você. Ele apenas efetua o download de arquivos novos ou modificados e exclui apenas aqueles que já não existem no espelho principal.
Como o wget, é possível que você possa baixa alguns arquivos indesejáveis. O comando lftp suporta expressões regulares para excluir arquivos dentro de um comando mirror. O comando abaixo mostra como espelhar uma distribuição do Fedora Core atual de repositório atualizado, excluindo os diretórios debug e repodata:
cd /var/www/mirror && \
lftp -c "set mirror:exclude-regex 'debug\/|repodata\/' && \
open http://mirror.example.com/pub/mirror/linux/core/updates/5/i386/ && \
mirror --delete --verbose"
Consulte a página de manual (man) do comando lftp para mais detalhes e opções de uso.
![]() | Usando Proxy para obtenção via HTTP ou FTP |
|---|---|
Se você está atrás de um proxy ou firewall, você pode precisar usar um proxy HTTP para espelhar arquivos. Para fazer isto, exporte as variáveis de ambiente
|
Use o comando rsync para sincronizar um conjunto de arquivos e/ou diretórios com uma máquina remota. Ele opera da mesma maneira que o rcp, mas geralmente é mais rápido. Uma razão para a velocidade é que o rsync tem um protocolo especial que avalia e pula arquivos (ou porções de arquivos) que já foram baixados.
Inicie identificando os módulos disponíveis no site do espelho principal que você escolheu. Note que os dois pontos duplos "::" são sempre usados depois do nome da máquina para separá-la do resto do caminho do rsync. O comando a seguir gera uma lista de "módulos" do espelho principal.
rsync mirror.example.org::
Estes módulos são aproximadamente equivalentes aos diretórios de nível de topo e eles seguem as mesmas regras. Para listar qualquer diretório do espelho principal, adicione o caminho do diretório no comando abaixo. Por exemplo, no espelho principal, o módulo fedora-linux-core é equivalente ao caminho fedora/linux/core no servidor de download principal do Projeto Fedora. Para listar o conteúdo da pasta da distribuição Fedora Core 5 no servidor principal, execute o seguinte comando. Não esqueça da barra direita "/". Sem ela, você receberá uma lista de somente um nome de pasta que corresponde ao último componente do caminho remoto.
rsync mirror.example.org::fedora-linux-core/5/
Para efetuar download usando o rsync, adicione um caminho de destino do seu sistema ao final da linha de comando. A árvore de arquivos resultante da lista de arquivos são obtidos para o caminho local que você especificou. Lembre-se, se você omitir a barra no final no caminho remoto, então o último componente desse caminho é criado como uma pasta e seu conteúdo é copiado.
rsync filehouse.exemplo.org::files/misc/ /var/www/misc/
Quando efetuar download usando o rsync com a finalidade de espelhar, use algumas opções de linha de comando para melhorar o desempenho e ter algumas informações. As opções -PHav habilitam as seguintes funcionalidades do rsync:
recupera arquivos baixados parcialmente e mostra uma barra de processo
preserva hard links
recupera todos os diretórios e preserva o máximo de informações de arquivos possíveis, incluindo datas, donos, permissões, arquivos de dispositivos (se você estiver executando como root) e links simbólicas
mostra informações de saída na tela
Remova a opção -v se você executar este processo de espelhamento como parte de um script ou não tenha necessidade de monitorar o processo. O seguinte exemplo espelha todas as versões disponíveis do Fedora Core a partir de um site principal.
![]() | Exemplo de comando efetua download de muitos gigabytes de arquivos |
|---|---|
Este comando obtém muitos gigabytes de arquivos e a intenção é usá-lo apenas como um exemplo. Não execute esse comando se não compreender suas conseqüências. |
rsync -PHav mirror.example.org::fedora-linux-core/5/ /var/www/mirror/fedora/linux/core/5
A opção -n executa em modo de teste usando os outros parâmetros passados. Use este comando para testar qualquer comando rsync que você não esteja certo de quais arquivos você receberá. Veja também a Possível perda de dados.
A opção -z habilita compressão durante o processo rsync. O servidor compacta os dados antes da transmissão e o cliente descompacta antes de gravar os dados no disco.
![]() | Compressão usando rsync |
|---|---|
A grande maioria das distribuições Fedora Core consistem de arquivos RPM, que por si só já são dados comprimidos. Portanto, a compressão adicional não poupa tempo e, em vez disso, adiciona uma carga desnecessária sobre a CPU do espelho principal. Por cortesia, não use a opção |
A próxima seção apresenta algumas opções de funcionalidades adicionais que podem ser usadas para eliminar automaticamente subdiretórios da árvore de pastas baixadas. Com o uso apropriado, elas resultam em um espelho que é tão organizado e com funcionalidades completas quanto qualquer site principal público altamente requisitado.
![]() | Possível perda de dados |
|---|---|
Se você não for extremamente cauteloso ao usar estas opções, é possível excluir uma grande porção dos seus dados espelhados. Para a correção deste problema, pode ser necessário executar os passos descritos na Seção 2.2, “Copiando a Distribuição Original”. Por outro lado, se você também for descuidado com o seu caminho de destino e estiver como root, você poderá colocar seu sistema inteiro em risco. Conheça seu ambiente antes de usar estas opções:
|
Use a opção --exclude com um simples padrão definido de caracteres para impedir que se baixe certos arquivos e/ou pastas. Por exemplo, --exclude "*.iso" exclui qualquer arquivo terminado com ".iso".
Use a opção --delete, novamente com um padrão definido de caracteres, para remover qualquer arquivo do sistema local que não tenha um correspondente no espelho principal. Esta opção previne lixos de arquivos indesejáveis em seu espelho. Você pode também usá-lo para eliminar retroativamente subdiretórios da árvore que não deseja mais manter ou efetuar download.
Coringas são permitidos com comandos rsync, incluindo o asterisco *, ponto de interrogação ? e colchetes [ ]. O ponto de interrogação e os colchetes funcionam como no shell; O primeiro corresponde a qualquer caractér simples, enquanto os colchetes definem uma combinação de caracteres. Asteriscos são especialmente poderosos quando combinados com uma porção de um nome de arquivo. O asterisco duplo ** combina padrões definidos de qualquer caractér, incluindo barras; Um asterisco simples * corresponde a qualquer caractér, mas pára em uma barra. Desta maneira, julgue bem ao usar um ou outro. O asterisco duplo é muito útil para espelhar uma árvore que inclui múltiplas instâncias de diretórios e arquivos que contenham um padrão definido. Um bom exemplo é espelhar várias versões do Fedora Core, onde determinados nomes de arquivos aparecem em várias versões.
![]() | Combinando Padrões Definidos com Coringas |
|---|---|
Use asterisco duplo para eliminar diretórios que repetem ao longo de uma árvore espelhada. Por exemplo, quando espelhando um site que usa somente máquinas de arquitetura i386, você pode eliminar todos os arquivos e pastas criados pra a arquitetura x86_64, usando a opção |
Processe uma longa lista de remoções e exclusões com as opções --exclude-from e --delete-from. Siga cada tag com um nome de arquivo que contém uma lista de padrões definidos, um por linha, para serem combinados pela opção apropriada.
Estas dicas de sintaxe são somente uma explicação superficial do rsync, mas suficiente para fazer seu primeiro espelho. Uma vez que você selecionou seu local e formulou suas remoções e exclusões, execute o comando rsync com a opção -n. Redirecione a saída para um arquivo onde você possa examinar a lista resultante dos arquivos no editor de texto de sua escolha.
O seguinte exemplo espelha a distribuição do Fedora Core 5 inteira, com a opção --exclude que evita o download de:
Qualquer informação sobre a arquitetura x86_64;
Qualquer cabeçalho yum (veja a Seção 3.4, “Configurando Repositórios”);
Qualquer pacote debuginfo; e
Imagens de CD ou DVD
A opção -n é incluída com o propósito de fazer testes. A barra invertida no final das linhas indica este exemplo como uma linha de comando única.
rsync -Pan --delete --exclude "**x86_64**" --exclude "**headers**" \
--exclude "**debug**" --exclude "**iso**" \
mirror.example.com::fedora-linux-core/5/ \
/var/www/mirror/fedora/core/5
Espelhos Fedora são ainda mais úteis quando são mais do que apenas um "snapshot" da distribuição na hora do lançamento. A maioria dos administradores de espelho escolhem também efetuar download de atualizações e pacotes de erratas. Os repositórios de atualizações ou das árvores de desenvolvimento mudam diariamente e seu espelho deve refletir estas mudanças.
![]() | Etiqueta rsync |
|---|---|
Se você planeja fazer atualizações regularmente no seu espelho que implicam em uma grande quantidade de dados, você deve pedir permissão do administrador do espelho principal. Baixar pacotes de atualização durante a noite para as versões oficiais do Fedora Core 5 podem não necessitar de notificação, já que são raramente mais do que poucos megabytes. Entretanto, a árvore |
Uma vez que seu comando rsync esteja funcionando como desejado, você pode querer colocá-lo para executar toda noite em um script cron. O sistema cron permite que você agende ocorrência regulares de tarefas no seu sistema. Os intervalos são altamente configuráveis, mas executar a cada noite deixa seu espelho sincronizado com as atualizações e erratas. Esteja certo de que suas tarefas noturnas do cron seguem algumas regras simples:
Se seu espelho principal somente sincroniza uma ou duas vezes diariamente, execute sua tarefa depois do espelho principal completar as atualizações. Isto assegura que seu espelho não somente obtenha material fresco, mas também não interfira na largura de banda do servidor principal enquanto ele roda suas tarefas. Se você não sabe o horário, é geralmente seguro planejar seus downloads um pouco antes do amanhecer.
Assegure-se de que você tenha espaço em disco suficiente para pacotes adicionais. A árvore updates em particular cresce a medida que mais pacotes de erratas são liberados.
Sempre teste seu script completamente antes de permitir sua execução automaticamente. Use a opção -n ou -v na linha de comando do rsync para testar e então remova a opção uma vez que você tenha testado por completo. Lembre-se de que os resultados são enviados via e-mail pra sua conta no seu sistema, a menos você especifique uma conta diferente. Leia as páginas de manual (man) do crontab(5) para informações adicionais, com o comando man 5 crontab.