我的Ubuntu中的命令行sftp没有实现递归put。我发现2004年有关于使用-R选项开关实现此类功能的一些争论。所以我认为某种自制的递归是唯一的选择。
即
我打算用bash做这个,但任何其他语言就足够了。
Rsync或scp不是一个选项,因为我没有对服务器的shell访问权限。只有sftp。
答案 0 :(得分:16)
看看lftp。它是一个功能强大的文件传输客户端,支持ftp,ftps,http,https,hftp,fish(通过ssh shell 会话进行文件传输)和 sftp 。它具有类似ftp的交互式界面,但也允许在命令行中指定所有命令。查看mput
(非递归但处理glob模式)和mirror
(穷人的rsync)命令。
我将它用于只处理sftp上传的服务器:
lftp -c "open -u $MYUSER,$MYPASSWORD sftp://$TARGET ; mirror -R $SOME_DIRECTORY"
答案 1 :(得分:2)
GUI FTP客户端FileZilla也支持SFTP,并且还支持在目录下上传和下载。
答案 2 :(得分:2)
虽然我认为lftp是最好的选择,如果它可用,我会被困在一个古老的Cent OS安装上,需要通过SFTP进行递归放置。这就是我的所作所为:
find dir -type d -exec echo 'mkdir {}' \; | sftp user@host
find dir -type f -exec echo 'put {} {}' \; | sftp user@host
所以基本上确保所有目录都存在,然后发送文件。
答案 3 :(得分:2)
我的ubuntu 12.04在sftp中附带put -r
答案 4 :(得分:1)
在命令行中,您可以使用 putty-tools 包执行此操作。
它附带一个名为psftp
的sftp替代品。
它支持mput -r
,它以递归方式将本地目录复制到远程。
答案 5 :(得分:0)
我想你可以用bash做到这一点,但这将是很多工作。相反,我建议您查看Python and the Chilkat library。
答案 6 :(得分:0)
在Java中,您可以使用我们的商业产品edtFTPj/PRO通过SFTP递归传输。或者,您可能需要考虑SCP - 通常支持递归并通过SSH运行。
答案 7 :(得分:0)
答案 8 :(得分:0)
经过大量的谷歌搜索和良好的答案,我使用传输同步为工作。这不是一个很好的解决方案,但能胜任。