Como mover arquivos ausentes somente da pasta de origem para a de destino

2

Tem sido muitas horas lendo e lendo todos os dias ... testando rsync, Grsync e Unison ... sem esperança! A maneira normal de copiar / sincronizar arquivos rsync entre duas pastas locais é "copiar toda a pasta! - não o conteúdo como foi pensado! - nada mais!

Para experimentar, fiz duas pastas com nomes diferentes na mesma raiz. Quando recebi esse resultado, eu os separei e dei à fonte o mesmo nome de destino, caso essa fosse a causa.

rsync-zrahvWnt--delete-after~/Documents/test3/source-DRV~/Documents/test3/dest-T

EutambémuseiTODASasopçõespossíveisnoUnison..semesperança!Omesmoresultado!

"Resolver conflitos em favor da primeira raiz" "Propagar da direita para a esquerda" "Direita para a esquerda"

Nenhum funcionou de maneira diferente! Todos deram o mesmo resultado: Copie a pasta "whole" "dentro" da outra pasta!

O que eu quero basicamente é muito simples:

  1. Verifique se há arquivos ausentes no Destino que estão na origem.

  2. Mover - preferível, mas a cópia está ok

  3. apenas arquivos ausentes da origem para a pasta Target.

  4. Não faça nada para arquivos que sejam idênticos em tamanho, data e encontrados nas duas pastas.

Isso resultará em uma "Pasta Completa" - que é o destino, e uma "Pasta Inútil", que é a fonte, a ser excluída manualmente sem problemas.

[Editar:]Aoimplementarasolução,descobriqueuseiaopção-n,quefaz"execução a seco" .. provavelmente essa é outra razão pela qual nada funcionou. Eu removi e tudo correu como esperado!

    
por OpenSourceMan 29.12.2017 / 03:51

1 resposta

3

Se eu entendi sua intenção corretamente, tudo o que você precisa fazer é anexar uma barra ao seu primeiro argumento de rsync . Isto é, em vez de escrever

rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV ~/Documents/test3/dest-T

escreva

rsync -zrahvWt --remove-source-files ~/Documents/test3/source-DRV/ ~/Documents/test3/dest-T

Editar Eu modifiquei os comandos acima de acordo com os comentários do OP em relação a responder sua própria pergunta.

Com relação aos parâmetros de rsync :

  • -z: compress file data during the transfer
  • -r: recursive: To copy the folders under the current folder and its files, not just the files under the current folder
  • -a: preserve almost everything (dates, permissions, etc.)
  • -h: output numbers in a human-readable format
  • -v: verbose: to print more details of the process on the screen
  • -W: copy the whole file, not update the difference of data only.

More details can be found by running man 1 rsync.

    
por 29.12.2017 / 04:09