Kleiner Denkanstoß:
Code:
#!/bin/bash
# file: sync.sh
# Skript (Aufrufname)
ME=$( basename $0 )
# Basisverzeichnisse (fest)
BASE1=/tmp/test/1
BASE2=/tmp/test/2
# Dateiliste, relativ zu BASE1 und BASE2
LIST=file.xml
# Weiche, je nachdem, in welche Richtung gesynct werden soll
case $ME in
sync1to2)
FILELIST=$BASE1/$LIST
SRC=$BASE1
DST=$BASE2
;;
sync2to1)
FILELIST=$BASE2/$LIST
SRC=$BASE2
DST=$BASE1
;;
*)
echo "Fehler: muss als sync1to2 oder sync2to1 aufgerufen werden."
exit 1
;;
esac
if [ ! -r "$FILELIST" ] ; then
echo "Fehler: Dateiliste '$FILELIST' nicht gefunden."
exit 1
fi
# Quelldateien aus Datei lesen...
cat $FILELIST | while read srcfile ; do
# ... Zieldatei "generieren"
dstfile=$DST/${srcfile##$SRC/}
# Existiert die Zieldatei? ja => Warnung, aber ueberschreiben
if [ -r "$dstfile" ] ; then
echo "Warnung: Ueberschreibe Datei '$dstfile'"
fi
# evtl. das cp in den else-Zweig?
cp -f "$srcfile" "$dstfile"
done
Anm.:
Das Skript heißt "sync.sh" und hat zwei symbolische Links auf sich mit den Namen "sync1to2" und sync2to1". Pfade müssen natürlich angepasst werden!
Eventuell kommst du mit dem Ansatz weiter, denn du hast zweimal das gleiche nur jeweils umgedreht. Es reicht also ein Skript, dass aber je nach Syncronisationsrichtung Quelle und Ziel vertauschen muss.
Gruß
L00NIX
Lesezeichen