Nachdem ich eine Weile mit scp gespielt habe, habe ich die robusteste Lösung gefunden:
(Achten Sie auf die einfachen und doppelten Anführungszeichen)
Von lokal nach remote:
scp -r "DATEI1" "DATEI2" HOST:'"VERZEICHNIS"'
Von remote nach lokal:
scp -r HOST:'"DATEI1" "DATEI2"' "VERZEICHNIS"
Beachten Sie, dass alles, was nach "HOST:" kommt, an den Remote gesendet und dort verarbeitet wird. Daher müssen wir sicherstellen, dass sie nicht von der lokalen Shell verarbeitet werden. Deshalb werden einfache Anführungszeichen verwendet. Die doppelten Anführungszeichen werden verwendet, um Leerzeichen in den Dateinamen zu behandeln.
Wenn sich alle Dateien im selben Verzeichnis befinden, können wir * verwenden, um sie alle zu matchen, wie zum Beispiel
scp -r "VERZEICHNIS_IN"/*.txt HOST:'"VERZEICHNIS"'
scp -r HOST:'"VERZEICHNIS_IN"/*.txt' "VERZEICHNIS"
Im Vergleich zur Verwendung der "{}" Syntax, die nur von einigen Shells unterstützt wird, ist diese hier universell