Como gerenciar minha biblioteca de músicas em sincronia em vários dispositivos?

1

Eu tenho vários dispositivos (servidor, torre, notebook, telefone android). Eu quero ter minha biblioteca de músicas em sincronia em todos eles. Então, o que eu pensei foi um sistema de controle de revisão que apenas cuida de ações CRUD (ou melhor, CRD). Talvez ele pudesse rastrear os arquivos usando seu nome inicial e rastrear qualquer renomeação ou exclusão.

Todos os softwares populares que conheço (git, svn, cvs, ...) estão fora de questão porque salvam muita sobrecarga (eles diferenciam os arquivos binários).
O streaming não funciona para mim, porque nem sempre tenho uma conexão com a internet. Sincronizar a música usando ferramentas como o unison é muito ineficiente também porque eu escrevo metadados para os arquivos para que seu hashsum, timestamp e size mudem constantemente. Se houver uma ferramenta diff ou sync que ignore pequenas alterações no tamanho e ignore timestamp e permissões e assim por diante, talvez seja bom, mas eu não conheço uma.

Quaisquer outras soluções criativas e interessantes são bem-vindas.

    
por dAnjou 24.06.2011 / 03:12

2 respostas

1

Você pode configurar o rsync para fazer coisas como ignorar arquivos que já existem, o que evitará algumas das rotinas de atualização de metadados que você está preocupado. Suas preocupações sobre isso provavelmente são exageradas. Se apenas uma pequena parte do arquivo foi alterada, somente essa parte será atualizada; o algoritmo rsync principal descobrirá que a maior parte é a mesma. Você pagará uma sobrecarga adicional para ler os arquivos ao longo do caminho, mas talvez você possa usar "--ignore-existing" na maior parte do tempo e fazer apenas a forma mais longa de sincronização que tenta classificar todas as alterações com menos frequência.

Eu escrevi um artigo chamado Introdução ao rsync, para o paranóico que tenta explicar algumas das partes enigmáticas de como ele decide o que vai fazer. Há um monte de opções aqui, e o único que você quer que ele não forneça é a capacidade de definir um limite para uma diferença de tamanho grande para acionar um conjunto diferente de regras. Parece-me que aconteceria raramente o suficiente para que você pudesse planejar uma dessas sessões de sincronização mais longas periodicamente para cuidar disso.

Eu também mantenho alguns dados como este no git. Eu não tenho certeza porque você está tão preocupado com o fato de que ele armazena diffs binários. Você deve poder remover as informações antigas de seu repositório e depois compactá-las periodicamente, se essa sobrecarga o incomodar. O git é bom em lidar com o problema de renomeação para evitar que isso aconteça: se você simplesmente move algo de um lugar para outro ou muda seu nome, se ele é realmente o mesmo arquivo git irá descobrir isso e não salvar uma nova cópia isso.

    
por 25.06.2011 / 03:06
0

Copie, atualize e exclua separados - use ferramentas que façam uma coisa bem - quero dizer, que é a filosofia unix, certo?

Eu apenas mantenho um conjunto padronizado de tags e arquivos, e sincronizo-os com um conjunto 'base' - você poderia simplesmente usar cp -u ou outra ferramenta de cópia de sua escolha - no meu caso, eu tenho o arquivo mestre configurado um sistema Windows, e apenas copie os arquivos no lugar para uma unidade USB, e use isso para sincronizar outras cópias.

Se eles estiverem desatualizados, apague o original ou use rsync ou uníssono somente então.

    
por 25.06.2011 / 03:43