Eu precisaria de um tipo de sw de sincronização para executar a mesclagem bidirecional (recursiva) de pastas.
Digamos que eu tenha 2 pastas A e B.
A pasta A contém arquivos: A 1, 3, 5 and 7.
pasta B contém arquivos:1, 2, 3 and 6.
Após a execução da mesclagem, o resultado deve ser o seguinte:
Pasta A: 1, 1-b, 2, 3, 3-b, 5, 6, 7
Pasta B:1, 1-a, 2, 3, 3-a, 5, 6, 7
Dividindo-os separadamente:
as pastas A e B contendo: 2, 5, 6, 7
(a união OR de nomes de arquivos sem colisão: uma cópia bidirecional (da mesma classificação, nenhuma fonte em particular nem destino em particular) sem renomear;
Pasta A contendo também: 1, 1-b, 3, 3-b
(versões próprias mais versões adicionadas)
Pasta B contendo também: 1, 1-a, 3, 3-a
(versões próprias mais versões adicionadas)
(O traço-a ou traço-b é apenas um espaço reservado para renomeação automática para contornar a colisão de nomes, não é realmente importante. sufixo faria). Basicamente, cada pasta conteria todas as versões (sem que as mais recentes substituíssem as antigas) de todos os arquivos, independentemente de seus nomes.
Como eu pude obter esse resultado? Eu olhei para 'meld', mas não funcionou conforme o esperado (ele propôs sobrescrever arquivos existentes, incapaz de renomear), e o 'rsync' parece intrinsecamente assimétrico (oferecendo classificação mais alta à origem do que ao destino). Preciso de uma verdadeira fusão paritética ...
Agradecemos antecipadamente por qualquer ajuda. Aliás ... um SW existente dedicado seria mais apreciado do que reinventar a água quente manualmente. Mas se não existir, também seria necessário o script. TY. Gatto
fonte
Respostas:
Olhe nas
info
páginas para ver claramentecp
. Um comando comoDeve copiar todos os arquivos de A para B e, se já houver arquivos (nomes de arquivos conflitantes), o arquivo de destino existente será renomeado para
[name]-original
(ou seja, um backup será feito primeiro).Em seguida, execute-o novamente usando em
--no-clobber
vez de--backup
e--suffix
deve copiar os arquivos restantes apenas em B para AIsso deve excluir os
[name]-original
arquivos em B. Verifique se não há arquivos com esse sufixo para começar.E adicione a
-v
para ver o que está acontecendo.[Tentei - recursivo, mas não foi o esperado]
fonte