sftp使用shell脚本将文件从windows服务器复制到linux服务器

sftp使用shell脚本将文件从windows服务器复制到linux服务器,linux,windows,bash,shell,Linux,Windows,Bash,Shell,我正在编写shell脚本,该脚本应该将文件及其子目录从Windows服务器传输到Linux Samba服务器。Windows服务器设置为接受sftp请求,我使用共享ssh密钥登录Windows服务器,因此不需要密码交换。我可以使用以下命令从linux服务器登录到Windows: sftp user@host_name 它执行sftp命令并将我登录到Windows服务器。当我尝试使用以下选项时: get -r /home_directory/first_level/* /loca

我正在编写shell脚本,该脚本应该将文件及其子目录从Windows服务器传输到Linux Samba服务器。Windows服务器设置为接受sftp请求,我使用共享ssh密钥登录Windows服务器,因此不需要密码交换。我可以使用以下命令从linux服务器登录到Windows:

    sftp user@host_name
它执行sftp命令并将我登录到Windows服务器。当我尝试使用以下选项时:

    get -r /home_directory/first_level/* /local/directory/to/put/files
我收到一条错误消息,说无效标志-r。我无法使用SCP,因为服务器上未启用它


如何使用shell脚本将所有文件和目录从Windows服务器递归复制到linux服务器?

您可以在Windows服务器上安装并从那里启动scp-r。

您能给我们看一个更大的脚本片段吗

另外,get关键字是sftp行话的一部分,您正在做类似的事情吗

#!/bin/bash

sftp -v -oIdentityFile=path user@server<<-_EOF_
    get -r /home/dir/first_level/* /local/dir/to/put/files
    bye
_EOF_

# etc etc

rsync可用吗?如果远程服务器允许为密码安装密钥,我不认为允许递归sftp拷贝会带来更大的安全风险,如果存在更大的风险,可能会有人发表评论。您是否询问是否可以启用-r?否则,您将不得不提取目录列表,比较时间戳/大小,只提取更改或新文件。真头疼!你的时间会花得很好,至少你会把这件事作为一个严肃的问题向付钱给你的人提出。祝你好运我们部门说-r已经启用,他们可以在windows上使用它……问题是我的整个环境都是linux而不是windows。重读之后,我发现我错误地假设了你是如何使用sftp的。我只会做sftp-ruser@remhostremhostname:/path/to/dir/files/*/local/dir/I目前无法访问man sftp,因此参数顺序可能需要更改,可能是-R。祝你好运。最后,还有其他UTIL可以传输文件。但递归始终是一个问号。lftp非常有趣,有很多功能,但它可能没有安装在windows服务器上。祝你好运。谢谢。这些都是好建议。一旦我有机会看到什么效果最好,我就会发帖子。再次感谢。我只使用了sftpuser@host让我们把困惑留在一边。您的问题是,能否从支持sftp的远程服务器通过shell脚本递归复制文件和目录。答案是可以的。您可以使用脚本通过sftp进行连接,并使用here文件执行sftp命令,如上面的代码片段所示。