Zitat von gandro
Kennt einer für Unix/Linux nen Tool was zwei Dateibäume vergleicht, so dass ich synchronisieren kann, also doppelte Dateien in verschiedenen Pfaden erkennt und mir sagt, welche Dateien nur im einen Baum vorhanden sind?
Und die Bäume waren ursprünglich mal von der Verzeichnisstruktur her synchron (du suchst also eine Funktionalität wie ein vereinfachtes, bidirektionales rsync(1)) oder ist ihre Relation zueinander wie Kraut und Rüben, sodass man sich nicht auf Dateinamen, Dateigrößen oder Modifikationszeiten verlassen kann? Im ersteren Fall könnte es genügen, sich aus find(1)(, sort(1)) und comm(1) (gemeinsame oder unikale Zeilen zweier sortierter Dateien ausgeben) fix ein Skript zusammenzukleben, das nur mit den unterschiedlichen Zeilen operiert.
EDIT: Das sähe wohl etwa so aus (hab ich gerade in Notepad++ zusammengebaut, kann nicht für die Funktionalität garantieren):
pushd $TREE1
find | sed 's/^\.\///' | sort > /tmp/tree1
popd; pushd $TREE2
find | sed 's/^\.\///' | sort > /tmp/tree2
popd
# in TREE2 fehlende Dateien kopieren
comm -23 /tmp/tree1 /tmp/tree2 | \
while read f; do
f=${f#./}
# schneller als dirname
[ -d $TREE2/${f%/*} ] || mkdir -p $TREE2/${f%/*}
[ -e $TREE2/$f ] || cp $TREE1/$f $TREE2/$f
done
# dasselbe andersrum
comm -13 /tmp/tree1 /tmp/tree2 | \
while read f; do
f=${f#./}
[ -d $TREE1/${f%/*} ] || mkdir -p $TREE1/${f%/*}
[ -e $TREE1/$f ] || cp $TREE2/$f $TREE1/$f
done
rm /tmp/tree1 /tmp/tree2
Alles anzeigen
Auch wenn ich auf einmal dir gar nicht sagen kann, was dieser Schnippsel besser als
rsync -a --size-only $TREE1/ $TREE2
rsync -a --size-only $TREE2/ $TREE1
erledigen soll.