想要使用 shell 脚本将目录从 Linux 机器复制到 Windows (SMB)。
[user@host home]$ smbclient -W WORKGROUP --user='admin%admin$123' -c "put /data/directory" "//192.168.1.1/share"
Domain=[mydomain] OS=[Windows Server] Server=[Windows Server]
/data/directory does not exist
[user@host home]$ cd /data/directory
/data/directory
[user@host directory]$ ll
File1
File2
..
这是问题:
即使我使用 (
-N
)也不接受密码甚至尝试这个
--user=admin%admin$123
当我从命令中删除密码并且 shell 询问我密码时,它起作用了!
仅供参考:为了在Windows和Linux之间传输目录,我读到了关于curl和Windows上的scp的SSH守护进程,您有什么建议或简单的方法,而不需要Windows上的额外服务或Linux上的软件包?
答案1
如果您想/data/directory
在 Linux 上进行复制,以便其副本像\\192.168.1.1\share\directory
在 Windows 上一样显示,那么也许这个命令应该可以完成这项工作:
smbclient -W WORKGROUP --user='admin%admin$123' -c "lcd /data;recurse;mput directory" "//192.168.1.1/share"
理由:
- 要复制目录及其内容,您需要启用递归
recurse
并使用,mput
因为您将复制多个文件。常规put
命令只会传输一个文件一次,可以选择在目的地为副本指定不同的名称。 - 通过第一次使用
lcd
,递归受到限制,因此副本不会变成\\192.168.1.1\share\data\directory
,而只是\\192.168.1.1\share\directory