我正在运行smbclient版本4.9.4,尝试将97 MiB文件从Arch Linux传输到Windows,并以--socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072' 推荐的bsd用户身份调用smbclient, 但仍然失败cli_push returned NT_STATUS_IO_TIMEOUT。
从7.40版开始,curl支持smb协议。
因此,我使用它moderately_sized_file从Linux 将上载到OurRemoteDirectoryWindows机器上的服务172.16.17.52:
curl --upload-file /home/me/moderately_sized_file --user "OurWindowsDomain/MyUserName:MyPassword" smb://172.16.17.52/OurRemoteDirectory/Path/To/Dir/
对我来说,curl每次都可靠地上传了文件,并且还显示了上传进度,这很好。
请注意,curl 尚不支持在远程主机上创建目录。
因此,您可能需要/Path/To/Dir/使用以下命令进行创建(但smbclient mkdir到目前为止没有任何问题):
smbclient //172.16.17.52/OurRemoteDirectory/ -U MyUserName%MyPassword -W OurWindowsDomain -c 'mkdir Path/To/Dir/'