Как вытащить файл с сервера с помощью scp?

31

Я нахожусь на машине A и хочу вытащить файл с машины B.

A$ scp <myuserid>@hostB:<path of file in B> .

это говорит о том, что:

scp: <path of file in B>: No such file or directory

Но на компьютере B этот файл существует по этому пути.

Что не так?

хуг
источник
Это точный формат команды, которую вы выполнили? Или после ':' было имя файла?
dtyler

Ответы:

43

Вы не указали ни одного файла: вы должны добавить файл (с путем) после двоеточия:

A$ scp <myuserid>@hostB:/absolutepath/file .

или

A$ scp <myuserid>@hostB:relativepath/file .

для пути относительно вашего домашнего каталога.

Если вы не указали другого пользователя (т.е. пользователи A и B совпадают), вам не нужно @

A$ scp hostB:/path/file .
Matteo
источник
2
Я исправил форматирование в вопросе, но, возможно, ваш ответ остается в силе. Проблема может быть вызвана путаницей между абсолютным и относительным (к дому) путями.
Стефан Гименес
@ StéphaneGimenez теперь, когда я вижу отредактированный ответ, который я понимаю. Это казалось странным вопросом :-)
Matteo
4
$ scp username@remoteip:remote_location_file /location/where/you/save

Это работает только при копировании файла. если вы хотите скопировать каталог, используйте

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

Опция, которую вы можете использовать по вашему желанию

-P порт
Указывает порт для подключения к удаленному хосту. Обратите внимание, что эта опция написана с большой буквы «P», потому что -p уже зарезервирован для сохранения времен и режимов файла в rcp.

-p
Сохраняет время изменения, время доступа и режимы из исходного файла.

-r
Рекурсивно копировать целые каталоги.

-v

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

Ракиб
источник
1
ОП попросил скопировать файл, а не каталог.
контрмод
2

использовать правильный путь scp

scp ssh://user@hostname/tmp/foo.txt .

источник
1

Вы можете указать либо путь к файлу относительно вашего домашнего каталога, либо абсолютный путь к файлу. Например, если foo.txtв директории под названием docsпод вашей домашней директории и bar.txtв /var/tmp, вы можете сделать

scp username@host.example.com:docs/foo.txt .
scp username@host.example.com:/var/tmp/bar.txt .

Обратите внимание, что если имя файла содержит символы, которые являются специальными для удаленной оболочки (как правило, пробел или !"#$&'*;<>?[\]^`{|}~), вам нужно экранировать их для удаленной оболочки в дополнение к экранированию их для локальной оболочки. Например, если файл вызывается foo bar.txtи находится в вашем домашнем каталоге:

scp username@host.example.com:'foo\ bar.txt' .

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

mkdir host.example.com
sshfs username@host.example.com:/ host.example.com
cp host.example.com/path/to/file .
Жиль "ТАК - прекрати быть злым"
источник
1

Можно легко использовать SCP в обоих направлениях, если у вас есть пользователь DMZ и пароль. Вы находитесь на своей локальной машине: от DMZ до вашей локальной машины Linux (pull). Означает скопировать abc.text из folder2 в ваш текущий вошедший в систему PWD.

scp user@111111:folder1/folder2/abc.txt .

Он попросит пароль

вот и все

Теперь вы хотите отправить папку с подпапками и файлами с вашего локального компьютера в DMZ:

usr @ localmachine: ~ / abc / defs> папка scp -r / usr @ 111111: vkrishna / docker /

снова будет запрошен пароль

: это корневая папка удаленной машины, а vkrishna это папка там и снова подпапка докера. В папке локально defs есть папка с названием «папка», которую мы хотим полностью перенести.

Нравится / abc / defs / folder

Вимал Кришна
источник