Como sincronizar inteligentemente dois diretórios no OSX

0

Isso pode parecer um simples pedido à primeira vista, mas acredito que não se deva a algumas sutilezas críticas que gostaria de acompanhar. Aqui está o cenário:

Eu tenho um diretório em minha estação de trabalho em casa, que eu clonei em um HD portátil de 1 TB para ter comigo em viagens de negócios, para uso com meu laptop. Isso significa que faço alterações na cópia inicial e na cópia do celular em momentos diferentes. Isso pode incluir não apenas alterar arquivos, mas criar, excluir, renomear e mover arquivos. Ambas as máquinas estão executando o último lançamento do Mountain Lion.

A sincronização simples (via rsync ou unison) não parece ser apropriada porque sincroniza todos os arquivos em ambos os locais. Isso significa que, se eu tiver excluído um arquivo enquanto estiver em trânsito e desejar que a exclusão seja refletida na minha cópia local quando eu sincronizar, isso não acontecerá e, em vez disso, o arquivo excluído anteriormente reaparecerá na cópia para dispositivos móveis.

De alguma forma, eu preciso de uma solução que seja inteligente o suficiente para reconhecer arquivos / diretórios que foram excluídos, bem como aqueles que foram renomeados. Isso quase soa como algo que eu preciso usar o SVN, mas eu nunca usei isso fora de um ambiente de desenvolvimento de software, onde tudo foi configurado para eu usar. Eu não sei como eu iria implementar isso no meu próprio ambiente.

Existe uma solução compatível com Mac OS X para este problema? Se assim for, eu realmente aprecio um ponteiro na direção certa.

    
por Jonathan van Clute 07.07.2013 / 19:51

2 respostas

1

Se bem entendi que você deseja uma ação automatizada que comece a comparar as datas de modificação do diretório, selecione aquela que foi tocada mais recentemente e use essa informação para definir quem deve ser duplicado no outro.

(esta é a única maneira de decidir se um arquivo existe em um lado apenas porque acabou de ser criado (e depois copiá-lo) ou porque está na pasta mais antiga (depois, apague-o).

Acho que isso deve estar ao alcance com alguns scripts, mas não sou inteligente o suficiente para fazer isso ... Dito isto, como você mencionou, tal processo não sendo um SVN adequado, você realmente se arrisca a propagar uma exclusão errônea, que pessoalmente eu não gostaria ...

Você também tem aplicativos de sincronização prontos ("Synk" vem à mente) que, na verdade, são capazes de lidar com esses conflitos, mas minha versão tem 3 anos e não tenho certeza de que não basta "parar e perguntar" caso de um conflito ao sincronizar os dois caminhos. Talvez você possa pegar a última versão demo e tentar - isso seria mais rápido que o script.

    
por 10.07.2013 / 16:28
0

O Unison perguntará se você deseja propagar uma exclusão, renomear, adicionar etc. de um diretório para outro. Você pode mudar a direção da propagação: por exemplo, se você estiver executando o Unison com sua estação de trabalho como raiz 'esquerda' e o HD portátil como raiz 'direita', e se você excluiu um diretório no portátil, o Unison Por padrão sugerir a propagação da mudança de 'esquerda' para 'direita', ou seja, oferecerá para restaurar o diretório no HD. Mas você pode alterar isso para ir de 'direita' para 'esquerda' (pressionando < ), para que o diretório seja apagado da sua estação de trabalho.

Funcionará assim para todas as alterações. Lembre-se de que a propagação de alterações é bidirecional e você pode alterar a direção de cada alteração.

    
por 26.10.2014 / 21:33