使用Shell Scripting

时间:2017-02-14 18:03:26

标签: shell sftp

我正在尝试将多个文件夹位置的项目本地上传到SFTP站点。我使用的是现有的shell脚本,我知道它适用于从单个本地位置上传,但我无法弄清楚如何使其适用于来自多个本地位置的上传。

我对编码很新,只有批处理脚本的基本经验和现有shell脚本的一些小编辑,所以我将不胜感激任何帮助。

以下是我现有的单一本地位置上传脚本的示例

open sftp://(userid):(password)@(sftp site) -hostkey="(hostkey)"

pwd
ls
lcd "(local directory)"
lls
cd (remote directory)
ls
put * -filemask=|*/ ./
exit

这对我们以前运行良好,但是我试图通过将它们组合成一个作为自动化任务运行的进程来清理我们现有的一些脚本,但我无法弄清楚如何将多个任务链接起来这一起。

1 个答案:

答案 0 :(得分:0)

只需重复每个位置的上传代码:

cd /remote/directory

lcd /local/directory1
put * -filemask=|*/ ./

lcd /local/directory2
put * -filemask=|*/ ./

虽然它确实是一个WinSCP脚本,但您只能使用一个命令:

put -filemask=|*/ /local/directory1/* /local/directory2/* /remote/directory/

请参阅put command的文档:

  

put <file> [ [ <file2> ... ] <directory>/[ <newname> ] ]

     

...

     

如果指定了更多参数,则除最后一个参数之外的所有参数都指定要上载的文件集。可以使用Windows通配符替换文件名以选择多个文件。要上载目录中的所有文件,请使用掩码*

     

最后一个参数指定目标远程目录,并可选择operation mask以不同名称存储文件。目标目录必须以斜杠结尾。 ...