如何将文件从 UNIX 传输到 Windows?

Moh*_*deh 4 windows unix file-transfer scp

我想将文件从 UNIX 服务器传输到 Windows 2003 服务器,所以我下载copssh到 Windows 服务器上,并且openssh已经安装在 UNIX 服务器上。

当我执行以下命令时(在 UNIX 服务器上):

scp -r /file_in_unix/ user@windows_hostname:\c:\\\
Run Code Online (Sandbox Code Playgroud)

出现以下输出(在 UNIX 服务器的屏幕上):

100% |***************************************************************|   562       00:00
Run Code Online (Sandbox Code Playgroud)

但是,当我C在 Windows 服务器上查看驱动器中的文件时,我什么也没找到。为什么文件不显示?

Dav*_*ett 9

目标路径看起来不对 - 对于大多数 unix shell 来说,反斜杠是一个转义字符而不是路径标记,所以我猜这个文件已经以奇怪的文件名放入 SSH 用户的主目录。

IIRC copssh 基于 cygwin,所以你可能需要运行的是:

scp -r /file_in_unix/ user@windows_hostname:/cygdrive/c/
Run Code Online (Sandbox Code Playgroud)

在 Windows 机器上复制到 SSH 服务的另一种方法是在 Windows 机器上使用像WinSCP这样的 GUI 客户端登录到 Unix 机器并通过这种方式拉取文件 - 尽管如果您尝试自动化,这不适合过程。

如果您在 unix 机器上拥有特权访问权限(即您是,或者可以通过 sudo 或类似方式成为 root)并安装了相关支持,您只需将文件复制到 Windows 共享上即可。你没有说你使用的是什么 Unix。对于 Ubuntu 和类似的检查是否存在支持并安装它如果不能完成sudo aptitude install smbfs,您可以使用类似的东西安装 Windwos 共享sudo mount -tcifs //11.22.33.44//sharename /mnt/tmp -ousername=WindowsUserName(其中 11.22.33.44 是 Windows 机器的 IP 地址,取决于您的网络设置,您可能能够通过名称而不是地址来引用机器)。完成此操作后,您只需使用基本文件管理工具(cpmv、...)即可与该 Windows 共享和调用进行交互umount /mnt/tmp当你完成时。您可能希望选择比 /mnt/tmp 更有意义的挂载点名称。当然,如果要自动/安排数据传输,您可以让共享保持挂载。这种方法确实假设 Unix 机器可以通过它们之间可能存在的任何防火墙安排看到 Windows 机器的文件共享。