rsync -avzh /tmp/src /tmp/dst/
Come sincronizzare due directory con il codice bash?
-
28-07-2022 - |
Domanda
Qualcuno può aiutarmi con il comando Bash Codice non Shell, per ottenere due cartelle, questo quello che ho provato a fare, devo sincronizzare la directory D1 con D2 con questo codice, ma con questo codice sto ottenendo il primo file in D1 da copiare in D2 senza il resto del file e quale sarebbe il modo migliore per riscrivere questo codice nel file bash per sincronizzare D2 con D1,Devo risolvere il mio problema con il codice bash non con il comando shell, quindi per favore, aiutatemi con il mio codice e indirizzami a risolvere il mio 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
Nessuna soluzione corretta
Altri suggerimenti
Lasciami provare, dobbiamo chiarire esattamente cosa significa sincronizzazione:
Diciamo che hai due dir
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
dove d# è una directory e f# è un file (e# indica un numero di una cifra, se non lo hai ancora capito), mette i loro timestamp in mm/dd hh: mm.
Quindi vuoi avere F4 copiato su D2, F3 copiato su D1 (nessun sovrascritto fino a qui), quindi copiare (e sovrascrivere) D2/F1 con D1/F1 e D1/F2 con D2/F2.
allora dovresti finire con:
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
Bene, tutto ciò che ho fatto fino ad ora, è stato riformulare la tua domanda per essere sicuro che sia in un modo che posso rispondere, quindi se qualcuno lo legge ancora, la soluzione potrebbe essere semplice come:
Aggiorna i file esistenti in due direzione
cp -ur d1 d2
cp -ur d2 d1
questo è tutto.