Bash : Pfad aus Array übergeben -> is not a directory

F

franky83

Aktives Mitglied
Thread Starter
Dabei seit
05.12.2007
Beiträge
563
Reaktionspunkte
35
Hallo, ich wende mich jetzt mal an andere schlaue Köpfe weil ich nicht mehr weiter kommt.

Code:
QUELLORDNER[0]="/Users/Ich/Movies/"
ZIELORDNER[0]="/Volumes/ExterneHdd/Filme & Serien/"

for (( i = 0 ; i <= ${#QUELLORDNER[@]} - 1; i++ )) do
    if [ -d "${QUELLORDNER[i]}" ] && [ -d "${ZIELORDNER[i]}" ]; then

         rsync -avn "${QUELLORDNER[i]}" "${ZIELORDNER[i]}"

    fi
done

Ja ich habe also alle meine Ordnerpaare die gesynct werden sollen in zwei Arrays.

Nun habe ich schon alles mögliche versucht aber entweder wird der Pfad nicht als Ordner erkannt bei der if Anweisung oder rsync kommt mit dem Pfad nicht klar. Probleme machen eigentlich nur Pfade mit "&".

Variationen:

Code:
ZIELORDNER[0]=/Volumes/ExterneHdd/Filme & Serien/
ZIELORDNER[0]="/Volumes/ExterneHdd/Filme & Serien/"
ZIELORDNER[0]=/Volumes/ExterneHdd/Filme\ \&\ Serien/
ZIELORDNER[0]="/Volumes/ExterneHdd/Filme\ \&\ Serien/"
ZIELORDNER[0]='/Volumes/ExterneHdd/Filme & Serien/'
ZIELORDNER[0]='/Volumes/ExterneHdd/Filme\ \&\ Serien/'

Jedoch kein Erfolg. Hoffe Ihr könnt mir helfen.

Gruß Franky
 
wilder Tip, versuch mal
Code:
ZIELORDNER[0]="\"/Volumes/ExterneHdd/Filme\ \&\ Serien/\""
oder
Code:
ZIELORDNER[0]="\"/Volumes/ExterneHdd/Filme & Serien/\""
 
Hat leider nicht geholfen.

Aber wenn ich es so angebe (Quell- und Zielordner):

Code:
ZIELORDNER[0]=/Users/Ich/Music/Musik\ Bibliothek/Alben\ \&\ Sampler/

dann geht der Pfad schon mal als Directory durch, bleibt dann aber beim rsync hängen:

Code:
rsync: link_stat "/Users/Ich/Music/Musik Bibliothek/Alben & Sampler/Bibliothek/Alben" failed: No such file or directory (2)
rsync: link_stat "/Users/Ich/Music/Musik Bibliothek/Alben & Sampler/&" failed: No such file or directory (2)
rsync: link_stat "/Users/Ich/Music/Musik Bibliothek/Alben & Sampler/Sampler/." failed: No such file or directory (2)
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-40/rsync/main.c(992) [sender=2.6.9]

Ich hab keine Ahnung warum rsync immer noch versucht hinter dem eigentlich richtigen Pfad nochmal was anzuhängen.
 
Problem gelöst. edit: leider doch nicht

Diese Variante funktioniert:
Code:
ZIELORDNER[0]=/Volumes/ExterneHdd/Filme\ \&\ Serien/

Habe euch aber nur die halbe Wahrheit erzählt. Der Teufel steckt im Detail. Im rsync habe ich noch einen backup Ordner definiert und der hat die Probleme verursacht. Das wäre meine nächste Baustelle.

Danke für euren Support.
 
Zuletzt bearbeitet:
Wie ich schon festgestellt habe hat der backup Ordner im rsync Befehl die Probleme verursacht und dort hänge ich nun.

Ist nur der relevante Teil des Scriptes.
Läuft in einer for-Schleife.
Code:
BACKUPDIRNAME=`date "+%Y-%m-%d_%H:%M:%S"`
VOL=`df "${ZIELORDNER[i]}" | head -n 2 | tail -n 1 | awk '{ print $6; }'`
BACKUPDIRPATH=$VOL/BACKUP/
STR="${ZIELORDNER[i]}"
OPTS="--force --delete --delete-excluded $EXCLUDES ${EX_OPTS[i]} --backup --backup-dir=$BACKUPDIRPATH$BACKUPDIRNAME${STR/$VOL} -av"
rsync $OPTS "${QUELLORDNER[i]}" "${ZIELORDNER[i]}" >> $LOG
Zeile1: Backup Ordner Namen zuweisen, hier Datum
Zeile2: Volume (Pfad) aus dem Pfad des Zielverzeichnisses auslesen, durch df
Zeile3: allgemeiner Backuppfad jedes Volumes
Zeile4: Pfad des Zielordners wird (temporär) in eine Variable geschrieben
Zeile5: rsync Optionen -> hier auch der Fehler bei --backup-dir wo letztendlich der komplette Backuppfad erstellt wird. ${STR/$VOL} gibt den absoluten Pfad der Datei die gebackupt werden soll zurück bezogen auf das Laufwerk. Somit kann ich im Backup Ordner nachvollziehen aus welchem Ordner die Datei ursprünglich stammt.

Hier liegt aber das Problem. Egal welche Varianten ich (siehe oben) ausprobiere alles was Leerzeichen oder ein & im Pfad hat mag er nicht.

Zeile6: rsync wird aufgerufen

Hoffe Ihr seht noch durch.
 
Zurück
Oben Unten