При использовании SSH для подключения rsync к удаленному серверу, как вы избегаете пробелов и тому подобного в удаленном пути? Простая обратная косая черта экранирует пространство для локальной подсказки bash, но на удаленном компьютере пространство затем читается как разрыв пути, таким образом отмечая конец этого пути.
Поэтому, когда я делаю, rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/
происходит то, что удаленный сервер читает это как просто, /path/to/dest/some/
и так как он не может найти это назначение удаленно, потому что фактическим назначением является «некоторый каталог», а не просто «какой-то».
Если я попытаюсь выполнить ту же команду и избежать обратной косой черты и пробела, чтобы пройти через приглашение локального bash и сохранить обратную косую черту для удаленного сервера (всего три обратной косой черты:) /path/to/dest/some\\\ dir/
, она действительно отправит обратную косую черту на удаленный сервер, но на удаленный сервер. затем интерпретирует путь, /path/to/dest/some\/
а не /path/to/dest/some\ dir/
удаляет пробел и символы после него.
Если я пытаюсь заключить путь в кавычки, он ведет себя примерно так же, эффективно обрезая путь в пространстве. Так что это тоже работает только для того, чтобы пройти через приглашение локальной Баш.
Первоначально я использовал путь, в котором был сегмент «-» (пробел-дефис-пространство), а удаленный сервер возвращал ошибку, rsync: on remote machine: -: unknown option
которая и начала все это стремление избежать пробела.
Итак, что я должен сделать, чтобы это работало правильно с удаленным сервером, без необходимости удалять пробелы или другие ошибочные символы, такие как дефисы, из удаленного пути?
-s
рассматривается вопрос без необходимости применять двойной побег вручную.