我正在尝试使用 SCP 将一个 zip 文件从基于 Linux 的机器传输到基于 Windows 的机器。
我可以顺利完成传输,但传输完成时会显示“设备上没有剩余空间”。
共享的目标有大量可用空间。我正在传输一个大约 5 GB 的文件,但共享上有几百 GB 的可用空间。
我认为这可能是目录路径的问题。在 Windows 服务器框中,共享将是 c:\folder,而当我在 Linux 中使用 SCP 时,我使用 /folder。
希望这是有意义的。
答案1
只是另一个猜测:Windows 机器上运行的 SCP 服务器是 64 位软件吗?如果是 32 位可执行文件,它可能不支持超过 4 GB 的文件(好吧,GiB,即 4 x 1024 x 1024 x 1024 字节)。
快速检查:如果您在任务管理器中看到文件名后有“*32”,则说明这是一个 32 位可执行文件。(查看更多:https://superuser.com/questions/358434/how-to-check-if-a-binary-is-32-or-64-bit-on-windows)
但如果它是一个 64 位可执行文件,仍然不能保证它可以处理超过 4 GB 的文件......
您是否尝试过传输大约 4 GB 的文件?如果传输小于 4 GB(例如 3800 MB)的文件没有任何问题,但传输大于 4 GB 的文件失败,那么最好的猜测是 SCP 服务器无法处理这么大的文件。
另一个猜测是:临时目录中的磁盘空间可能不足(打开 %TEMP% 就可以到达那里)。
答案2
我也进行了同样的调查:如果您试图上传大文件但未能完成(例如在 Midnight Commander (mc) 中),它将保存在 /tmp 中,并且可能超过 1Gb,这就是为什么它会通知“设备上没有剩余空间”的原因。尝试检查本地计算机上的可用空间并检查“/tmp”:
# df -Th
...
tmpfs tmpfs 1001M 1001M 0 100% /tmp
...
在这种情况下,您需要删除文件(似乎来自以前的传输),如下所示:
# rm /tmp/mc-root/*
答案3
我总是使用 Winscp 在 Windows 上使用 scp,从来没有遇到过问题。
此外,您能提供您正在运行的命令和程序吗?
答案4
只是猜测:请检查您要将文件复制到的服务器是否在 C 盘上有足够的空间来存放此文件。接收方可能会将文件放在临时目录中,并在传输过程中将文件其余部分附加到该目录中...
还要检查是否已设置正确的权限(包括共享和 NTFS)。守护进程是否有写入权限。
检查驱动器/共享上是否实施了每个用户配额。