【问题标题】:Transferring files over SSH [closed]通过 SSH 传输文件 [关闭]
【发布时间】: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] 可以用于上传?

【问题讨论】:

    标签: ssh scp


    【解决方案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
    

    如果要复制整个目录,则需要-rscpcp 类似,但您可以使用 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 .
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-31
      • 2016-10-12
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多