Rsync über SSH-Pfad mit Leerzeichen funktioniert nicht mit Anführungszeichen

12

Ich kann RSYNC über SSH erfolgreich durchführen, solange die Pfade keine Leerzeichen enthalten.

Wenn der Pfad Leerzeichen enthält, funktioniert es nicht. Ich habe Schrägstriche, Anführungszeichen und Anführungszeichen ausprobiert.

Wenn ich Schrägstriche benutze, sagt die Ausgabe, dass es ein Erfolg ist, aber ich sehe keine übertragenen Dateien.

rsync -avz /path\ with\ spaces/ user@remotelocation:/media/another\ path\ with/spaces/

Wenn ich einfache oder doppelte Anführungszeichen verwende, sagt es mir, dass die Erlaubnis nach Eingabe meines Passworts verweigert wird

rsync -avz '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'

Was kann ich tun?

Danke.

    
AndrewMRiv 16.03.2015, 20:17
quelle

3 Antworten

6

Erweitern Sie die Antwort von rzr mit Beispielcode und Verweisen, fügen Sie einfach das -s -Flag hinzu, geben Sie die Pfade an, und machen Sie sich keine Gedanken über ausgehende Leerzeichen im Remote-Pfad:

rsync -avzs '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'

Als Referenz die vom OP angegebenen Optionen:

  • -a, Archivmodus, gleich -rlptgoD (nein -H, -A, -X)
    • Enthält:
    • -r, --recursive, rekursiv in Verzeichnisse
    • -l, --Links, kopiere Symlinks als Symlinks
    • -p, --perms, Berechtigungen beibehalten
    • -t, --times, Änderungszeiten beibehalten
    • -g, --group, Gruppe beibehalten
    • -o, - Besitzer, Eigentümer beibehalten (nur Super-User)
    • -Geräte, Gerätedateien erhalten (nur Super-User)
    • -Specials, spezielle Dateien beibehalten
  • -v, --verbose, erhöhe die Ausführlichkeit
  • -z, --komprimieren, Dateidaten während der Übertragung komprimieren

Der zusätzliche benötigte Parameter:

  • -s, --protect-args, keine Leerzeichentrennung, nur Platzhalterzeichen
binarysubstrate 01.02.2016, 19:04
quelle
13

Sie müssen Leerzeichen sowohl in der lokalen Shell als auch in der Remote Shell maskieren. Versuchen Sie Folgendes:

rsync -avz '/path with spaces/' 'user@remotelocation:/media/another\ path\ with/spaces/'

Die Quelle /path with spaces/ in der lokalen Shell kann nur durch einfache Anführungszeichen umgangen werden, d. h. '/path with spaces/' .

Andererseits wird im Fall des Ziels die lokale Shell mit einfachen Anführungszeichen versehen, und die Leerzeichen in der Remote-Shell werden mithilfe des Escape-Zeichens ( \ ) vor den Leerzeichen entfernt.

    
heemayl 16.03.2015 20:29
quelle
1

Sehen Sie sich rsync-Option -protect-args (-s) an, es sind keine zusätzlichen Schrägstriche erforderlich.

    
rzr 08.06.2015 02:47
quelle

Tags und Links