Почему scp говорит «Нет такого файла»?

У меня есть сценарий bash, который использует scp для копирования файла с моей машины на другую. Сценарий продолжает выходить после ввода пароля SSH с ошибкой:

 <filename>: No such file or directory 

Тем не менее, в скрипте я проверяю файл, и все в порядке. Вначале я set -o verbose и вот что я получаю в конце скрипта:

 scp /Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4 root@rpi.local:"/media/3TB/TV\ Shows/NCIS" root@rpi.local's password: /Volumes/FX4\ HDD/Users/matthewdavies/Downloads/NCIS.S11E01.HDTV.x264-LOL.mp4: No such file or directory 

Итак, я попытался выполнить команду scp как вывод, и все было в порядке; он копируется. Что случилось?

  • Создайте ссылку, но не измените канонический путь
  • Как я могу генерировать случайное 64-битное целое число со знаком с macOS?
  • crontab дает только 2045 строк вывода вместо 6000 строк
  • Почему grep обрабатывает строку ebug 'по-разному?
  • Как передать подстановочные знаки в командной строке
  • Как добавить псевдоним для моего pwd в существующий файл?
  • Найти отличия в файле и сортировке файла по ключу
  • извлеките файл из jar-файла и получите diff
  • One Solution collect form web for “Почему scp говорит «Нет такого файла»?”

    Я не совсем уверен, что вы делаете, но когда я пытаюсь выполнить команду, которую вы имеете в своем примере, я получаю следующее:

     $ scp /home/saml/projects/Cooks.com\ -\ Recipe\ -\ Coconut\ Chicken.mht \ root@remotey:"/root/some spaced out file.mht" scp: ambiguous target 

    Это связано с тем, что вы указываете целевой путь, а также обратные косые черты, которые выходят из пробелов. Однако, когда текущая оболочка удаляет двойную кавычку, она также удалит одиночную обратную косую черту, оставив целевой путь в виде пустой строки с пробелами. Для того, чтобы пространство было правильно экранировано, необходимо выполнить одно из следующих действий:

    Примеры

    метод № 1 – двойная кавычка, одинарная кавычка

     $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:"'/home/user/some spaced out file.txt'" 

    метод № 2 – одинарная кавычка, двойная кавычка

     $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:'"/home/user/some spaced out file.txt"' 

    метод № 3 – одинарная кавычка, обратная косая черта

     $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:'/home/user/some\ spaced\ out\ file.txt' 

    метод № 4 – двойная кавычка, обратная косая черта

     $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:"/home/user/some\ spaced\ out\ file.txt" 

    метод №5 – тройная обратная косая черта

     $ scp /path/with\ spaces/file\ with\ spaces.txt \ user@remotey:/home/user/some\\\ spaced\\\ out\\\ file.txt 
    Linux и Unix - лучшая ОС в мире.