Как правильно скопировать папку с локального компьютера на сервер с помощью SSH? Почему команда scp выдает ошибку?

Как правильно скопировать папку с локального компьютера на сервер с помощью SSH? Почему команда scp выдает ошибку?

Я вошел на свой веб-сервер черезSSHиспользуя инструмент под названиемMobaXterm(что-то вроде Putty, но с расширенными функциями, это не так важно...)

Моя проблема в том, что я хочу отправить каталог со своего локального компьютера (Windows) в определенный каталог этого сервера (Linux).

Поэтому я попытаюсь использоватьscpкоманда, как показано здесь:http://www.hypexr.org/linux_scp_help.php

Я сделал так:

-jailshell-4.1$ scp -r C:\Users\Andrea\Documents\Betrivius\candycane-0.9.6\candycane /home6/XXX/public_html

ssh: Could not resolve hostname C: Name or service not known

Но, как видите, я получаю ошибку.

Почему? Что я упускаю? Как исправить эту проблему?

Спасибо

решение1

Вероятно, вы запускаете это в локальной оболочке MobaXterm (т.е. локальной для машины Windows). Если это так, вам нужно обновить синтаксис команды scp, чтобы он соответствовал этой среде, хотя синтаксис в любом случае неверен.

MobaXterm обеспечивает доступ к локальным дискам в своей оболочке через точку монтирования /drives/X, где X — буква диска Windows.

Кроме того, (упрощенный) общий синтаксис scp, независимо от среды, выглядит следующим образом:

Использование scp:

scp [[user@]host1:]/path[/filename] [[user@]host2:]/path/[filename]

Первая последовательность ( [[user@]host1:]/path[/filename]) — это раздел «FROM»; источник файла или файлов для копирования. Вторая — «TO»; пункт назначения. Скобки указывают на необязательные аргументы.

На самом деле это просто версия стандартной команды cp с поддержкой ssh; в разделе, предшествующем ей, :содержится специфическая для ssh информация, а информация после нее относится к операции cp.

пользователь:

userпо умолчанию используется ваше текущее локальное имя пользователя — его можно не указывать, если это правильное имя пользователя как в исходном, так и в конечном файле.

хозяин:

hostпо умолчанию используется локальный компьютер (localhost); поэтому, если вы копируете на/с локальной машины И имя пользователя на localhost, которое будет использоваться, является именем текущего пользователя, вы можете опустить этот аргумент для локальных файлов.

Путь к файлу:

path/filenameпо умолчанию указан домашний каталог пользователя, и его можно опустить, если это необходимо. filename можно опустить при выполнении рекурсивного копирования, как в вашей ситуации, — в этом случае просто укажите путь. Обычно полный путь и имя файла указываются в разделе FROM, а в разделе TO — только путь (по умолчанию имя файла будет сохранено).

Я использую remoteuserи remotePCв качестве имени пользователя и имени хоста удаленного ПК; замените на правильные имена.

Правильный синтаксис в вашем примере:

 scp -r "/drives/C/Users/Andrea/Documents/Betrivius/candycane-0.9.6/candycane" remoteuser@remotePC:/home6/XXX/public_html

Используйте команду man scpилиэтот сайтдля получения дополнительных сведений (аргументы, другая информация об использовании).

Вариант графического интерфейса

В качестве альтернативы MobaXterm предоставляет графический файловый браузер (построенный на основе sftp или scp в зависимости от параметров конфигурации), который обеспечивает двунаправленную передачу файлов методом перетаскивания при подключении к удаленному хосту через ssh.Подробности здесь.

решение2

Если только этот веб-сервер не имеет возможности напрямую подключиться к вашей машине Windows (через порт 22, для чего потребуется работающий демон SSH и перенаправление портов), вам придется вызывать SCP со стороны Windows. MobaXTerm — это клиент ssh, я не уверен, есть ли в нем встроенный SCP (лично я им не пользуюсь), но лучшим решением здесь будет использование клиента SCP, будь то клиент командной строки или клиент с графическим интерфейсом.

Довольно популярный клиент для Windows —WinSCP, это мой клиент, который всегда под рукой, когда у меня нет выбора, кроме как использовать Windows.

решение3

Отвечать

Почему команда scp выдает ошибку?

, ошибка заключается в том, что

ssh: Could not resolve hostname C: Name or service not known

, а используемая команда

scp -r C:\Users\Andrea\Documents\Betrivius\candycane-0.9.6\candycane /home6/XXX/public_html

Я бы сказал:

синтаксис C:\Users\....неверен. В этом контексте у вас есть две возможности описать путь:

  1. foo/bar/...: означает, что fooэто каталог (папка), видимый из вашего пути, это может быть ваш текущий путь ( pwd) или переменная окружения пути ( echo $PATH).

  2. /foo/bar/...означает, что fooэто каталог (папка), находящийся в корне вашей файловой системы.

Так как вы использовали первый вариант (потому что нет "/" перед "C:"), оболочка ищет C:в пути, но не может его найти. Следовательно, она пытается сопоставить другой синтаксис: [user@]host1:/path/..../filename. В этой ситуации ssh жалуется, потому что не может найти IP-адрес для C:(потому что думает, что C:это имя хоста). Поиск IP-адреса, соответствующего имени хоста, называется "разрешение имени хоста"; здесь это решение не срабатывает, поэтому вы понимаете ошибку.

решение4

В Windows у меня сработала следующая команда: scp -r "Reqd.Имя папки в кавычках" username@remote_server:Путь к файлу на сервере

scp -r "ABC" shivam@удалённый_сервер:/media/External/shivam.

Перед выполнением перейдите в папку, в которой находится нужная папка.

Связанный контент