通过 SSH 传输文件 [关闭]
Posted
技术标签:
【中文标题】通过 SSH 传输文件 [关闭]【英文标题】:Transferring files over SSH [closed] 【发布时间】:2010-09-25 12:22:14 【问题描述】:我正在命令行上通过 SSH 连接到远程服务器,并尝试使用 scp
命令将目录复制到我的本地计算机上。但是,远程服务器返回此“使用”消息:
[Stewart:console/ebooks/discostat] jmm% scp -p ./styles/
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
[Stewart:console/ebooks/discostat] jmm%
我希望能够双向传输文件。根据我的阅读,我认为上面的命令可以用于下载,scp -p [localpath] [remotepath]
可以用于上传?
【问题讨论】:
【参考方案1】:不,您仍然需要scp [from] [to]
,无论您以哪种方式复制
不同的是,你需要scp -p server:serverpath localpath
【讨论】:
-p 的作用是什么? 来自man scp
:保留原始文件的修改时间、访问时间和模式。
要明确 -p
仅包含在此处,因为 OP 在其原始问题中包含了标志。它与答案没有任何关系【参考方案2】:
你需要scp
某处。你有scp ./styles/
,所以你说的是安全复制./styles/
,但不是复制到哪里。
一般来说,如果你想下载,它会去:
# download: remote -> local
scp user@remote_host:remote_file local_file
local_file
实际上可能是一个目录,用于放置您要复制的文件。要上传,则相反:
# upload: local -> remote
scp local_file user@remote_host:remote_file
如果要复制整个目录,则需要-r
。 scp
与 cp
类似,但您可以使用 user@remote_host:file
指定文件以及仅指定本地文件。
编辑:如注释中所述,如果本地和远程主机上的用户名相同,则在指定远程文件时可以省略用户。
【讨论】:
注意,如果远程主机和本地主机上的用户相同,用户名可以省略:scp hello.c myserver.net:~/projects/ 是的,没错,我会对此添加注释。我将用户包括在内,因为这样我给出的示例将始终有效。 :) 我在这方面遇到了困难……这是正确的。 scp C:\filename.txt server1@server2:home 请在“donload”和“upload”上添加粗体格式。 "naturally" (我说自然是因为我在这上面浪费了 15 分钟)你不应该在尝试“下载”到本地时连接到远程主机,因为如果你正在执行代码一个远程实例,“本地”将被解释为“远程”,如果你明白我的意思的话。所以不要先运行ssh。【参考方案3】:如果复制到/从您的桌面计算机,请使用 WinSCP,或者如果在 Linux 上,Nautilus 通过连接到服务器选项支持 SCP。
scp 只能将文件复制到运行 sshd 的机器上,因此您需要从正在运行 scp 的机器上运行远程机器上的客户端软件。
如果在命令行复制,使用:
# copy from local machine to remote machine
scp localfile user@host:/path/to/whereyouwant/thefile
或
# copy from remote machine to local machine
scp user@host:/path/to/remotefile localfile
【讨论】:
你就是那个男人。我在不到 10 秒的时间内部署了一个博客,而无需在服务器端进行任何额外安装! 这非常有效。我在 cmd 中使用了 msysgit,因为它同时具有 scp 和 ssh。 这非常有效。我用 scp * user@host:/path/to/where 这应该是最佳答案。 感谢 WinSCP 的建议。比尝试手动编写所有这些命令要容易得多...【参考方案4】:你需要指定源和目标,如果你想复制目录,你应该看看 -r 选项。
所以要递归地将 /home/user/whatever 从远程服务器复制到您的当前目录:
scp -pr user@remoteserver:whatever .
【讨论】:
以上是关于通过 SSH 传输文件 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章