O que você quer dizer com: "1) Cada cliente deve sincronizar com uma pasta específica no servidor, mas os clientes não devem sincronizar entre si devido a limitações de espaço em disco."
A palavra "sync" é vaga. Existem pelo menos três interpretações possíveis do termo:
-
"Push only" sync, o que significa que o cliente envia seus dados para o servidor, mas não faz o download de nenhum dado do servidor.
-
"Pull only" sync, o que significa que o cliente faz o download dos dados para o servidor, mas não envia as alterações locais para o servidor.
-
Sincronização "bidirecional", que é uma combinação de 1 e 2 combinada com algumas regras sobre mesclar ou resolver conflitos quando arquivos do mesmo nome são enviados ou recebidos.
Se você quer apenas push, você pode simplesmente usar algo simples como FTP ou SCP (dezenas de clientes disponíveis e servidores em todas as principais plataformas) e enviar os dados para o servidor, ignorando o que está no servidor.
Se você deseja sincronizar apenas determinados arquivos de acordo com determinadas regras, é essencialmente uma sincronização bidirecional "com regras". Embora suas regras possam ser regras arbitrariamente complexas, como o download de arquivos apenas quando a lua está exatamente meia cheia às 12h07 sobre o Uruguai nos anos que terminam em "5", o suporte básico para o comumente antecipado regras está disponível no programa "rsync". Consulte o link