【问题标题】:Transfer file over ssh通过 ssh 传输文件
【发布时间】:2011-01-31 19:33:13
【问题描述】:

在ssh协议中,有没有文件传输机制?
我正在处理已经具有 ssh 设施代码的现有代码库。现在我需要通过 ssh 连接传输文件。如果 ssh 协议已经支持它,我不必将 scp 东西集成到其中。

谢谢。

编辑:
我使用基于 openssh 的 C、ssh 代码。
由于某些限制,我必须以编程方式传输文件,而不是使用外部程序/命令。该程序应该在远程主机上逐块传输任何大小的文件,并即时处理该块。然后块数据被丢弃。

【问题讨论】:

标签: ssh file-transfer


【解决方案1】:
To download: remote -> local
scp user@remote_host:remote_file local_file 

To upload: local -> remote
scp local_file user@remote_host:remote_file

对于多个文件,在 scp 之后包含 -r

【讨论】:

    【解决方案2】:

    老式的方法是“tar-to-tar”,它可以很好地复制和保留权限。当双方都有 rsync 时,这在很大程度上已被使用 rsync 所取代。

    ssh test@example.org "cd mydir && tar cfp - mysubdir" | tar xvfp -
    

    执行此操作时请注意稀疏文件等。大多数 tar 都可以选择在此类过程中保留文件漏洞。

    【讨论】:

    • 记住双方都必须能够使用 rsync
    【解决方案3】:

    Rsync 可以提供帮助:

    rsync usernamea@server.com:filename remotefilename
    

    【讨论】:

    • 不幸的是,rsync 必须在两台机器上都可用
    【解决方案4】:
    echo "hello" | ssh user@SSHHost "cat - > /tmp/file"
    

    我只是读取文件,在 SSH 中通过管道传输它,然后在 /tmp/file 中的 SSHHost 服务器上写入。

    【讨论】:

    • 我必须以编程方式传输文件,因为存在一些内存/硬盘限制。
    • +1 为美好的 'ol days
    【解决方案5】:

    尝试查看SFTP

    编辑:您可能还会发现 this article 对于通过 ssh 运行 rsunc 很有用。

    【讨论】:

      【解决方案6】:

      sftp 和 scp 都是现有的“安全”文件传输方法,但您的答案将取决于您用于应用程序的技术堆栈。您没有提及您使用的是 C#、PHP 还是其他语言,或者您的应用程序在哪种机器上运行。这些事情将对您得到的答案产生重大影响。

      【讨论】:

        最近更新 更多