Copie o diretório recursivamente apenas se o arquivo existir no destino e somente se for mais recente que o destino

Copie o diretório recursivamente apenas se o arquivo existir no destino e somente se for mais recente que o destino

Como podemos copiar arquivo e/ou diretório somente se o arquivo existir no destino e somente se for mais recente que no destino, e para o caso do diretório ele deverecursivamentecopiar com capacidade
como

 $ ls -a ~/.config
 gtk-2.0/             
 gtk-3.0/
 SpeedCrunch/

 $ ls -a /other/path/home/.config/
 gtk-2.0/             
 gtk-3.0/
 SpeedCrunch/


$ rsync -u --existing ~/.config /other/path/home/
skipping directory .

não posso trabalhar.

Qual utilitário Linux e como fazer/resolver? Obrigado antes

Responder1

Rápido:

Você esqueceu de incluir a opção recursiva "-r":

rsync -u --existing -r ~/.config /other/path/home/

Coisas extras:

Além disso, você pode considerar usar -aswitch que é igual a -rlptgoDincluir recursivo, além de preservar alguns atributos importantes, como segue:

  • -r: recorre aos diretórios
  • -l: copia links simbólicos como links simbólicos
  • -p: preserva as permissões
  • -t: preserva os tempos de modificação
  • -g: preservar grupo
  • -o: preserva o proprietário (somente superusuário)
  • -D: preserva arquivos especiais iguais a --devices --specials

Use o seguinte para teste:

mkdir src
touch src/file{1..3}
touch src/thefile
# Destination:
mkdir dst
touch dst/file{1..3}
touch -d 20201023 dst/thefile
# List all
free -D src dst

Tente agora:

rsync -rt -uPv --existing src dst/

Eu usei:

  • -r: recorre aos diretórios
  • -t: preserva os tempos de modificação
  • -u: pula arquivos mais recentes no receptor
  • -P: mostra o progresso durante a transferência
  • -v: aumenta a verbosidade
  • --existente: ignora a criação de novos arquivos no receptor

informação relacionada