如何使用 scp 从服务器中提取文件?

xyz*_*xyz 39 scp

我在机器 A 上,想从机器 B 中提取文件。

A$ scp <myuserid>@hostB:<path of file in B> .
Run Code Online (Sandbox Code Playgroud)

它说:

scp: <path of file in B>: No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是在机器 B 上,这个文件存在于这个路径中。

出了什么问题?

Mat*_*teo 50

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

A$ scp <myuserid>@hostB:/absolutepath/file .
Run Code Online (Sandbox Code Playgroud)

或者

A$ scp <myuserid>@hostB:relativepath/file .
Run Code Online (Sandbox Code Playgroud)

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

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

A$ scp hostB:/path/file .
Run Code Online (Sandbox Code Playgroud)

  • 我修复了问题中的格式,但也许您的答案仍然有效。问题可能来自绝对路径和相对(到主)路径之间的混淆。 (2认同)

Rak*_*kib 5

$ scp username@remoteip:remote_location_file /location/where/you/save
Run Code Online (Sandbox Code Playgroud)

请注意:这仅在复制文件时有效。如果你想复制目录使用

$ scp -r username@remoteip:remote_location_directory /location/where/you/save
Run Code Online (Sandbox Code Playgroud)

我们已经在第二个命令中看到了递归选项。手册页中列出了此选项以及您可以根据需要使用的其他选项:

  • -r
    递归复制整个目录。

  • -P port
    指定要连接到远程主机上的端口。注意这个选项是用大写的“P”写的,因为-p已经被保留用于在rcp中保留文件的时间和模式。

  • -p
    保留原始文件的修改时间、访问时间和模式。

  • -v

    详细模式。使 scp 和 ssh 打印有关其进度的调试消息。这有助于调试连接、身份验证和配置问题。