Wie kann man mit RSYNC Verzeichnisse mit Sonderzeichen kopieren

DS111-User

Benutzer
Mitglied seit
13. Feb 2011
Beiträge
285
Punkte für Reaktionen
14
Punkte
18
Ich benutze ein RSYNC-Script und neuerdings zwei Verzeichnisse mit Sonderzeichen:
Code:
MyRH=NASuser@NASname.synology.me
SourceDir='/volume5/mp3Vol5/_LOUNGE & CHILLOUT/'
TargetDir='/volume1/mp3Vol1/_LOUNGE & CHILLOUT/'
und
Code:
MyRH=NASuser@NASname.synology.me
SourceDir='/volume5/mp3Vol5/_DEEP HOUSE/'
TargetDir='/volume1/mp3Vol1/_DEEP HOUSE/'

Leider funktioniert damit mein RSYNC-Befehl nicht mehr, egal welche Schreibweise ich bisher für diese beiden Variablen verwende.
... "$SourceDir" "$MyRH:$TargetDir"
Auch diese Variante bricht ab, weil es kein _DEEP Quell- und Zielverzeichnis gibt, nur ein _DEEP HOUSE
Auch gibt es kein _LOUNGE Quell- und Zielverzeichnis, nur ein _LOUNGE & CHILLOUT

Probiert habe ich es mit Single Quotes und \Leerschlag und \& - alles erfolglos.

Hat sonst jemand eine Idee, wie ich das sonst einwandfrei funktionierende Script für diese zwei Spezialfälle zum Laufen kriege?
(Abgesehen von der Variante, die Verzeichnisse selber ohne Sonderzeichen umzubenennen...)
 

DS111-User

Benutzer
Mitglied seit
13. Feb 2011
Beiträge
285
Punkte für Reaktionen
14
Punkte
18
Ich habe noch weiter getüftelt und eine (für mich) funktionierende Lösung gefunden:

Zusätzlich zu den Anführungs- und Schlusszeichen um die Variablen:
... "$SourceDir" "$MyRH:$TargetDir"
musste ich noch diese RSYNC-Option
Code:
-s, --protect-args  no space-splitting; only wildcard special-chars
hinzufügen.

Mit dieser Kombination funktioniert der Leerschlag wie auch das & Zeichen im Verzeichnisnamen.
 
  • Like
Reaktionen: Nixnuzz

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Was passiert, wenn man die Variablen gleich als String mit Double Quotes definiert?
Code:
SourceDir="/volume5/mp3Vol5/_LOUNGE & CHILLOUT/"
TargetDir="/volume1/mp3Vol1/_LOUNGE & CHILLOUT/"

Ist dann immer noch der zusätzliche Parameter --protect-args notwendig?
 

DS111-User

Benutzer
Mitglied seit
13. Feb 2011
Beiträge
285
Punkte für Reaktionen
14
Punkte
18
Du möchtest wissen was passiert, wenn man NUR die String-Zuweisung in Double Quotes setzt?
Später beim RSYNC dann nur noch
... $SourceDir $MyRH:$TargetDir
 

DS111-User

Benutzer
Mitglied seit
13. Feb 2011
Beiträge
285
Punkte für Reaktionen
14
Punkte
18
a) endet in "Unexpected remote arg: NASuser@NASname.synology.me:/volume1/mp3Vol1/_LOUNGE
und
b) (beides mal mit Double Quotes) ist noch schlimmer, das startet einfach einen Kopiervorgang und kopiert alles in ein neues _LOUNGE Verzeichnis
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Okay danke. Ich habe mich wieder daran erinnert, dass wir das gleiche Thema in diesem Beitrag bereits diskutiert hatten.
Darin habe ich 3 Möglichkeiten aufgezeigt wie man das Zielverzeichnis korrekt an den Server übergeben kann.
 
  • Like
Reaktionen: dil88

DS111-User

Benutzer
Mitglied seit
13. Feb 2011
Beiträge
285
Punkte für Reaktionen
14
Punkte
18
Danke für Deinen verlinkten Beitrag.
Ich bleibe bei meiner Variante mit Single Quotes in der Variablen-Zuweisung und mit der zusätzlichen Option -s oder --protect-args, weil das für mich die vermeintlich kleinste Umstellung ist.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Ja das ist doch legitim. Falls deine Lösung bei dir funktioniert muss auch nichts geändert werden.
Ich wollte nur zu etwas mehr Verständnis zu diesem Thema beitragen.
 
  • Like
Reaktionen: DS111-User


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat