Використовуючи 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
розглядається питання без необхідності застосовувати подвійний втечу вручну.