Rsync через SSH шлях з пробілами не працює з лапками


17

Я в змозі успішно RSYNC над SSH до тих пір, поки в шляхах немає пробілів.

Коли шлях має пробіли, він не працює. Я спробував нахили, котирування та подвійні лапки.

Коли я використовую косою рисою, вихідний заявляє, що це успіх, але я не бачу переданих файлів.

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

Коли я використовую одинарні або подвійні лапки, то мені вказується, що після введення мого паролю дозвіл відмовляється

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

Що я можу зробити?

Дякую.

Відповіді:


12

Розширюючи відповідь rzr прикладом коду та посилань, просто додайте -sпрапор, цитуйте шляхи, і не хвилюйтеся про те, що уникнути пробілів на віддаленому шляху:

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

Для довідки, параметри, визначені ОП:

  • -a, режим архіву, дорівнює -rlptgoD (немає -H, -A, -X)
    • Включає:
    • -r, --рекурсивний, рекурсивний у каталоги
    • -l, - посилання, скопіюйте символьні посилання як символьні посилання
    • -p, --perms, зберігати дозволи
    • -t, - tims, зберігати зміни часу
    • -g, --group, зберегти групу
    • -o, - власник, зберегти власника (лише суперкористувач)
    • -пристрої, зберігайте файли пристроїв (лише для суперкористувачів)
    • -спеціалізації, збереження спеціальних файлів
  • -v, --вербоза, збільшити багатослівність
  • -z, - стискати, стискати дані файлу під час передачі

Необхідний додатковий параметр:

  • -s, --protect-args, не розбиваючи місця, лише символи підстановки

13

Вам потрібно уникнути пробілів як у локальній оболонці, так і у віддаленій оболонці. Спробуйте це:

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

Джерело, /path with spaces/в локальній оболонці, можна уникнути, лише поставивши навколо нього окремі лапки, тобто '/path with spaces/'.

З іншого боку, у випадку призначення, локальна оболонка виходить, вводячи одиничні лапки, а пробіли - у віддаленій оболонці, використовуючи символ пробігу ( \) перед пробілами.


3
Просто наголошую - вам потрібні ДІВНІ котирування та зворотні риси.
Шрідхар Сарнобат

2

подивіться на параметр rsync –protect-args (-s), не потрібні додаткові риски


1
Ваша відповідь буде значно покращена, якби ви подали приклад, який може наслідувати початківець користувач. Дякую!
Старійшина Гейк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.