如何使用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 2011年

Answers:


43

您没有指定任何文件:您必须在冒号后面添加文件(带有路径):

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

要么

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

相对于您的主目录的路径。

如果您未指定其他用户(即A和B上的用户相同),则不需要 @

A$ scp hostB:/path/file .

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
OP要求复制文件,而不是目录。

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

如果一个人具有DMZ用户和密码,那么一个人就可以轻松实现两种方式:您在本地计算机上:从DMZ到本地Linux计算机(拉)。意味着将folder2内的abc.text复制到您当前登录的PWD中。

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

它将要求输入密码

就这样

现在您要发送一个文件夹,它将子文件夹和文件从本地计算机发送到DMZ:

usr @ localmachine:〜/ abc / defs> scp -r文件夹/ usr @ 111111:vkrishna / docker /

再次要求输入密码

:是远程计算机的根文件夹,而vkrishna是那里的文件夹,也是docker子文件夹。在本地defs文件夹中有一个我们要完全转移的名为“文件夹”的文件夹。

像/ abc / defs / folder

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.