soul_rebel
ist immer auf der flucht
mannomann... die sh raubt mir wieder die nerven....
ich habe hier ein backup-script geschrieben, das snychronisiert dir1 nach dir2 und guckt dann was in dir2 drin ist, was aber nicht in dir1 drin ist (unbenannte oder gelöschte dateien) und verschiebt diese nach dir3....
die erste aktion mache ich mit einem "einfachen" rsync aufruf, für die zweite lasse ich ein rsync "rückwärts" laufen wobei die option --dry-run verwendet wird, so dass die liste der dateien nur ausgegeben wird.
dann will ich durch die liste iterieren und die dateien verschieben, das geht aber nicht
die passage sieht so aus:
leider werden trotz dem sed die leerzeichen nicht durch "\ " ersetzt, bzw. sie werden es doch aber verschwinden bei der ausgabe, bzw. dateinamen mit leerzeichen drin werden auf jeden fall in unterschiedliche listenelemente gesteckt.
wenn ich um $LIST anführungszeichen mache, dann ist die ausgabe auf der konsole (durch echo in der ersten zeile des loops) korrekt, also der dateiname mit leerzeichen wird in einer zeile ausgegeben. dafür wird der dateipfad nicht von der if-abfrage erkannt.
außerdem fehlt bei allen listenelementen nach dem ersten aus irgendeinem grund dann $DIST/ vor den listenelemente
aber vielleicht habe ich ja auch nur mal wieder die sh-syntax voll verplant (komme irgendwie nie darauf klar wann wo klammern und anführungszeichen drum müssen, wer wann wo mit leerzeichen klarkommt usw usf)
vielen dank für hilfe
ich habe hier ein backup-script geschrieben, das snychronisiert dir1 nach dir2 und guckt dann was in dir2 drin ist, was aber nicht in dir1 drin ist (unbenannte oder gelöschte dateien) und verschiebt diese nach dir3....
die erste aktion mache ich mit einem "einfachen" rsync aufruf, für die zweite lasse ich ein rsync "rückwärts" laufen wobei die option --dry-run verwendet wird, so dass die liste der dateien nur ausgegeben wird.
dann will ich durch die liste iterieren und die dateien verschieben, das geht aber nicht

die passage sieht so aus:
Code:
echo "** Beginning Update..."
rsync --verbose --archive --executability --times --progress \
--human-readable --one-file-system "$SRC" "$DEST"
echo "** Done. Now moving (re)moved files to $MOV..."
LIST=`rsync -v -a --dry-run "$DEST" "$SRC" | grep -v "bytes/sec" \
| grep -v "building file list" | grep -v "total size is" | sed '/ /s//\\ /g'`
for i in $LIST; do
echo "$DEST/$i"
if [ -f "$DEST"/"$i" ]
then
mv -v "$DEST"/"$i" "$MOV"
#echo "$i"
fi
done
echo "** Done."
fi
wenn ich um $LIST anführungszeichen mache, dann ist die ausgabe auf der konsole (durch echo in der ersten zeile des loops) korrekt, also der dateiname mit leerzeichen wird in einer zeile ausgegeben. dafür wird der dateipfad nicht von der if-abfrage erkannt.
außerdem fehlt bei allen listenelementen nach dem ersten aus irgendeinem grund dann $DIST/ vor den listenelemente

aber vielleicht habe ich ja auch nur mal wieder die sh-syntax voll verplant (komme irgendwie nie darauf klar wann wo klammern und anführungszeichen drum müssen, wer wann wo mit leerzeichen klarkommt usw usf)
vielen dank für hilfe
