
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 -a
switch que é igual a -rlptgoD
incluir 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