rsync -avzh /tmp/src /tmp/dst/
Como sincronizar dois diretórios com código Bash?
-
28-07-2022 - |
Pergunta
Qualquer um pode me ajudar com o comando Bash Code não Shell, para obter duas pastas sincronizadas, isso o que eu tentei fazer, preciso sincronizar o diretório D1 com D2 com este código, mas com este código tudo estou recebendo o primeiro arquivo Em D1, a ser copiado em D2 sem o restante do arquivo e qual seria a melhor maneira de reescrever esse código no arquivo bash para sincronizar D2 com D1,Preciso resolver meu problema com o código da Bash não com o comando Shell, então, por favor, ajude com meu código e me direcione para resolver meu problema
#! /BIN/BASH
di1=$(ls d1)
n=${#di1[@]}
for (( i = 1; i <$n+1 ; i++ )); do
t=$(find d2 -name ${di1[$i]})
if [[ $t = '' ]]; then
cp d1/${di1[$i]} d2
fi
done
Nenhuma solução correta
Outras dicas
Deixe -me tentar, precisamos esclarecer exatamente o que significa sincronização:
Digamos que você tenha dois diretores
d1
L f1 10/25 11:40
L f2 10/25 10:22
L f4 10/10 08:01
d2
L f1 10/25 10:11
L f2 10/26 09:56
L f3 10/24 11:37
Onde D# é um diretório e F# é um arquivo (e# significa qualquer número de dígitos, se você ainda não o descobriu), Whit deles, os timestamps em MM/DD HH: MM.
Então você quer ter F4 copiado para D2, F3 copiado para D1 (sem substituição até aqui), depois copie (e substitua) D2/F1 com D1/F1 e D1/F2 com D2/F2.
Então você deve acabar com:
d1
L f1 10/25 11:40
L f2 10/26 09:56
L f3 10/24 11:37
L f4 10/10 08:01
d2
L f1 10/25 11:40
L f2 10/26 09:56
L f3 10/24 11:37
L f4 10/10 08:01
Bem, tudo o que fiz até agora, foi reformular sua pergunta para ter certeza de que, de certa forma, posso responder, por isso, se houver alguém lendo -a ainda, a solução pode ser tão simples quanto:
Atualize os arquivos existentes nas duas direção
cp -ur d1 d2
cp -ur d2 d1
é isso.