Olá a todos!
Estou com um pequeno probleminha:
História:
Havia uma pasta em um servidor OwnCloud (rodando em um CentOs 7) em que um usuário decidiu fazer uma cópia dessa pasta. O processo não foi bem sucedido, copiando apenas alguns, outros não… O problema começa agora: Alguns novos documentos foram salvos na pasta nova, outros, na antiga. E agora precisamos colocar tudo em apenas uma única pasta, e, eliminar o documentos redundantes. Precisaria que as redundâncias fossem resolvida por apagar o documento mais novo.
Resumo:
Basicamente preciso de uma forma de excluir arquivos com o mesmo nome, e de duas pastas, fazer uma
O comando diff compara apenas o conteúdo dos documento, então não me atende.
O mv não consegue resolver o conflito de duplicidade de arquivos.
Ah, e ao todo são 197gb de documentação… então não tenho como fazer manualmente…
----FIM----
Tags: mescla, merge, arquivos duplicados
1 curtida
Para resolver este tipo de problema, eu utilizo o Freefile Sync.
É Free e tem Flatpak também.
5 curtidas
Na verdade, o diff compara arquivos entre diretórios sim.
Por exemplo, tente rodar diff ~/caminho/A/ ~/caminho/B/.
Para comparar manualmente, se houver um arquivo do diretório B/ (dir mais novo) no diretório A/ (dir mais velho), apagar do diretório B/…
dirA="$HOME/caminho/A"
dirB="$HOME/caminho/B"
cd -- "$dirA"
for f in *
do
diff -q "$f" "$dirB/$f" && rm -- "$dirB/$f"
done
Assim só deve sobrar arquivos em B que não estão em A, ou que são diferentes. Daí, eu mesclaria os arquivo manualmente depois de conferir…
Sugiro mover para uma pasta temp ao invés de remover para evitar perder arquivos sem conferir direito.
1 curtida
Acredito que esse é o tipo de cenário para qual o rsync foi feito. Só pelos critérios passados aqui, essa linha de comando deve atender:
# -r → entrar em diretórios
# -v → gerar relatório no terminal
# --ignore-existing → não sobrescrever arquivos
rsync -rv --ignore-existing ./fonte ./destino
É bom dar uma lida no manual do rsync se houver algum requisito adicional (como preservar symlinks, permissões, etc.).
3 curtidas
Gostei da solução
Encontrei um bash bastante interessante no github também. É permitido postar o link aqui?
E pelo que testei, é praticamente o que o diff faz, só que com uma saída mais bonitinha
2 curtidas
Testei a sua solução, e funcionou perfeitamente!
Muito obrigado pessoal!!!
Passando para incluir o link do git do MarcosBrasil, com um código muito bom também: Comaprando arquivos de 2 diretórios ( linux ) · GitHub
Pra quem usa o Plasma, tem o Krusader. Ele é parecido com o FreeFileSync mas de código aberto.
1 curtida
Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.