Копирование файла с использованием 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, это то же самое в других операционных системах?

  • SCP выборочно из каталога и подкаталога
  • Перенос файлов с разрывами строк в именах файлов на сервере Linux
  • Выходные данные команды scp / sftp как для стандартного вывода, так и для файла на сервере linux
  • Предотвратить перезапись существующих файлов?
  • Копирование файла с использованием SSH через туннель с отправкой сертификатов
  • Как передать файл через 2 сервера (source-> serverA-> serverB) с помощью одного сценария.
  • Однострочный трафик SCP для загрузки файла в конце строки
  • scp без замены существующих файлов в месте назначения
  • 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 должна работать.

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.