rsync -avzh /tmp/src /tmp/dst/
Wie synchronisiere ich zwei Verzeichnisse mit Bash-Code?
-
28-07-2022 - |
Frage
Kann mir jemand mit dem Bash-Code und nicht mit dem Shell-Befehl helfen, um zwei Ordner zu synchronisieren? Das habe ich versucht. Ich muss das Verzeichnis d1 mit d2 mit diesem Code synchronisieren, aber mit diesem Code erhalte ich nur die erste Datei in d1, um in d2 ohne den Rest der Datei kopiert zu werden, und was wäre der beste Weg, diesen Code in der Bash-Datei neu zu schreiben, um d2 mit d1 zu synchronisieren?Ich muss mein Problem mit Bash-Code lösen, nicht mit dem Shell-Befehl. Bitte helfen Sie mir bei meinem Code und weisen Sie mich an, mein Problem zu lösen
#!/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
Keine korrekte Lösung
Andere Tipps
Lassen Sie es mich versuchen, wir müssen genau klären, was Synchronisierung bedeutet:
Nehmen wir an, Sie haben zwei Verzeichnisse
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
Dabei ist d# ein Verzeichnis und f# eine Datei (und # bedeutet eine beliebige einstellige Zahl, falls Sie es noch nicht herausgefunden haben), mit ihren Zeitstempeln in MM/TT hh:mm.
Sie möchten also f4 nach d2 kopieren, f3 nach d1 kopieren (bis hier nicht überschrieben) und dann d2/f1 mit d1/f1 und d1/f2 mit d2/f2 kopieren (und überschreiben).
dann sollten Sie am Ende Folgendes haben:
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
Nun, alles, was ich bis jetzt getan habe, war, Ihre Frage umzuformulieren, um sicherzugehen, dass sie auf eine Art und Weise formuliert ist, auf die ich sie beantworten kann. Wenn es also schon jemanden gibt, der sie liest, könnte die Lösung so einfach sein:
Aktualisieren Sie die vorhandenen Dateien in beide Richtungen
cp -ur d1 d2
cp -ur d2 d1
das ist es.