Há alguns fatores importantes a serem considerados ao decidir que programa será usado.
Dois modelos diferentes são comumente usados para distribuir dados. No primeiro modelo, todos os clientes sincronizam seus arquivos com um servidor central. O servidor deve ser acessível a todos os clientes pelo menos ocasionalmente. Esse modelo é usado pelo CVS.
A outra possibilidade é deixar todos os hosts ligados em rede sincronizarem seus dados entre os pontos uns dos outros. O rsync funciona de fato no modo cliente, mas qualquer cliente também pode atuar como servidor.
O CVS e o rsync também estão disponíveis para muitos outros sistemas operacionais, incluindo vários sistemas Unix e Windows.
No CVS, a sincronização de dados começa manualmente pelo usuário. Isso permite um controle fino dos dados a serem sincronizados e um fácil gerenciamento de conflitos. No entanto, se os intervalos de sincronização forem muito longos, será mais provável que ocorram conflitos.
Conflitos só ocorrem raramente no CVS, mesmo quando há muitas pessoas trabalhando em um grande projeto de programa. Isso ocorre porque os documentos são fundidos na base de linhas individuais. Quando ocorre um conflito, somente um cliente é afetado. Normalmente, os conflitos no CVS podem ser facilmente resolvidos.
Não há gerenciamento de conflitos no rsync. O usuário é responsável por não sobregravar acidentalmente arquivos e resolver manualmente todos os possíveis conflitos. Por segurança, é possível empregar também um sistema de controle de versão.
No CVS, diretórios e arquivos novos devem ser adicionados explicitamente com o comando cvs add. Esse procedimento resulta em um maior controle do usuário sobre os arquivos a serem sincronizados. Por outro lado, novos arquivos são sempre ignorados, especialmente quando os pontos de interrogação na saída de cvs update são ignorados devido ao grande número de arquivos.
Um recurso adicional do CVS é a possibilidade de reconstrução de versões antigas de arquivos. Um breve comentário de edição pode ser inserido em cada mudança, e o desenvolvimento dos arquivos pode ser facilmente rastreado posteriormente com base no conteúdo dos comentários. Essa é uma ajuda valiosa para textos de teses e de programas.
Os discos rígidos de todos os hosts envolvidos devem ter espaço em disco suficiente para todos os dados distribuídos. O CVS requer espaço adicional para o banco de dados de repositório no servidor. O histórico do arquivo também é armazenado no servidor, requerendo ainda mais espaço. Quando arquivos em formato de texto são mudados, somente as linhas modificadas são gravadas. Arquivos binários requerem espaço em disco adicional relativo ao tamanho do arquivo sempre que ele for mudado.
Usuários experientes normalmente executam o CVS a partir da linha de comando. Entretanto, há interfaces gráficas do usuário disponíveis para Linux (como a cervisia) e para outros sistemas operacionais (como a wincvs). Muitas ferramentas de desenvolvimento (como a kdevelop) e editores de texto (como o Emacs) fornecem suporte ao CVS. É sempre mais fácil realizar a resolução de conflitos com esses front ends.
O rsync é bastante fácil de usar, sendo também adequado para principiantes. O CVS é um pouco mais difícil de operar. Os usuários devem entender a interação entre o repositório e os dados locais. As mudanças dos dados devem ser primeiro fundidas localmente no repositório. Esse procedimento é feito com o comando cvs update. Em seguida, as mudanças devem ser retornadas ao repositório com o comando cvs commit. Depois de compreender esse procedimento, os usuários principiantes também serão capazes de usar o CVS com facilidade.
Durante a transmissão, o ideal é proteger os dados contra interceptação e manipulação. O CVS e o rsync podem ser facilmente usados via ssh (secure shell), fornecendo segurança contra ataques deste tipo. A execução do CVS via rsh (remote shell) deve ser evitada. O acesso ao CVS com o mecanismo pserver em redes desprotegidas também não é recomendável.
O CVS tem sido usado por desenvolvedores por um longo tempo para gerenciar projetos de programas e é extremamente estável. Como o histórico do desenvolvimento é gravado, o CVS fornece proteção até mesmo contra certos erros do usuário, como uma exclusão não intencional de um arquivo.
Tabela 26.1. Recursos das Ferramentas de Sincronização de Arquivos: -- = muito ruim, - = ruim ou indisponível, o = médio, + = bom, ++ = excelente, x = disponível
|
CSV |
rsync | |
|---|---|---|
|
Cliente/Servidor |
C-S |
C-S |
|
Portabilidade |
Lin,Un*x,Win |
Lin,Un*x,Win |
|
Interatividade |
x |
x |
|
Velocidade |
o |
+ |
|
Conflitos |
++ |
o |
|
Sel. de arquivos |
Sel./arq., dir. |
Dir. |
|
Histórico |
x |
- |
|
Espaço em disco rígido |
-- |
o |
|
Interface gráfica do usuário (GUI) |
o |
- |
|
Dificuldade |
o |
+ |
|
Ataques |
+ (ssh) |
+(ssh) |
|
Perda de dados |
++ |
+ |