Копирование файла с использованием scp в несуществующий локальный каталог – вводящее в заблуждение сообщение об ошибке

Я пишу сценарий оболочки для копирования файла с удаленного хоста в локальный каталог с помощью scp . Если целевой каталог не существует, я получаю ошибочное сообщение об ошибке. то есть:

 scp user@remote-host:/path/to/existing/file /local/non-existing/directory/ 

Ошибка, которую я получаю:

 /local/non-existing/directory/: Is a directory 

что вызывает недоумение … Я бы ожидал чего-то вроде:

 Directory /local/non-existing/directory/ does not exist 
  1. Это имеет смысл для кого-то или это только я?
  2. Вы считаете, что это дефект в scp?
  3. Я запускаю Ubuntu 14.04.3 LTS, это то же самое в других операционных системах?

One Solution collect form web for “Копирование файла с использованием scp в несуществующий локальный каталог – вводящее в заблуждение сообщение об ошибке”

ошибка

Найдено связанная ошибка . Кажется, он исправлен в Ubuntu 14.04.5 (openssh 1: 6.6p1-2ubuntu2.8)

В отчете об ошибке Redhat есть объяснение:

Эта проблема также находится в исходном openSSH и появляется, когда вы пытаетесь скопировать что-то в несуществующий каталог с существующим родительским каталогом. Отсутствует проверка этого граничного условия. Сообщение об ошибке вызывается, когда процесс scp пытается записать в вышеупомянутый файл, но этот файл заканчивается косой чертой (что является интерпретацией для каталога), и это является причиной появления текущего сообщения об ошибке.

Оригинальный ответ

Невозможно воспроизвести (проверено на Ubuntu 14.04.5 LTS и Linux Mint 17)

  • Если /local/non-existing/directory not /local/non-existing/directory не существует, scp не работает:

     /local/non-existing/directory: No such file or directory 
  • Если /local/existing/directory , scp копирует file в /local/existing/directory/file

  • Если remote-host:/path/to/existing/file является каталогом, scp терпит неудачу с:

     scp: file: not a regular file 

Исправление проблем

 ssh user@remote-host "file /path/to/existing/file" 

должен предоставить вам информацию о удаленном файле (или, возможно, каталоге).

 file /local/non-existing/directory/ 

должен предоставить вам информацию о локальном каталоге

 mkdir -p /local/non-existing/directory/ 

wil рекурсивно создайте каталог и любой родитель, если это необходимо.

После mkdir -p , если file действительно является файлом и /local/non-existing/directory/ действительно является каталогом, ваша команда scp должна работать.

  • как сделать scp для подключения подключенного Wi-Fi?
  • используя команду scp для передачи файлов, сохраняющих одни и те же имена?
  • PSCP - почему он не может найти файл при использовании учетных данных, отличных от admin?
  • не может скопировать более 29 файлов на целевой сервер, используя сценарий оболочки
  • Запись функции bash, которая работает в списке имен файлов
  • копировать файлы удаленно на одном пути
  • Неверный вариант конфигурации: ControlPersist, а scp с управляющим мастером?
  • Как перенаправить вывод в журнал из команды wait
  • Как запустить два потока в сценарии оболочки bash?
  • Транспортировка тара, чтобы разделить трубопровод на scp
  • Каков наилучший подход к копированию каталогов?
  • Linux и Unix - лучшая ОС в мире.