Wie kann man mit RSYNC Verzeichnisse mit Sonderzeichen kopieren

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

DS111-User

Benutzer
Registriert
13. Feb. 2011
Beiträge
285
Reaktionspunkte
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...)
 
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
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?
 
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
 
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
 
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
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.
 
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

Additional post fields

 

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