2013-11-27 35 views
0

我正在寻找一种方法来创建Talend DI的文件夹结构(使用Talend Studio 5.2.0)。用Talend创建整个目录结构DI

我有一个临时文件夹中包含这样的事情:

/tmp/myjob/type1/file01.txt 
/tmp/myjob/type1/file02.txt 
/tmp/myjob/type1/file03.txt 
/tmp/myjob/type1/fileN.txt 
/tmp/myjob/type2/file01.csv 
/tmp/myjob/type2/file02.csv 
/tmp/myjob/type2/file03.csv 
/tmp/myjob/type2/fileN.csv 
/tmp/myjob/type3/file01.jpg 
/tmp/myjob/type3/file02.jpg 
/tmp/myjob/type3/file03.jpg 
/tmp/myjob/type3/fileN.jpg 

我想将整个目录结构传输到远程FTP(FTPS)文件夹中。

而结果将是:

/destination/type1/file01.txt 
/destination/type1/file02.txt 
/destination/type1/file03.txt 
/destination/type1/fileN.txt 
/destination/type2/file01.csv 
/destination/type2/file02.csv 
/destination/type2/file03.csv 
/destination/type2/fileN.csv 
/destination/type3/file01.jpg 
/destination/type3/file02.jpg 
/destination/type3/file03.jpg 
/destination/type3/fileN.jpg 

的想法是为了取/tmp/myjob作为根源文件夹和拓蓝分量来重新创建整个目录结构在destination配置tFTPPut(远程)夹。

我试图把下面的线路中的filemask属性:

FileMask    newName 
"./type1/*.txt"    "" 
"./type1/*.csv"    "" 
"./type1/*.jpg"    "" 

当我执行任务,它使以下错误:

[statistics] connected 
Exception in component tFTPPut_1 
2: No such file 

任何人都知道,如果它可以创建这样的任务?

回答

2

不幸的是,tFtpPut不能让你创建远程文件夹的可能性。唯一的解决方法是通过ssh连接并触发正确的CMD/Bash命令。

关于您的文件掩码问题,我的建议是使用Perl5正则表达式语法来表示掩码模式。它的功能更强大,标准和有据可查。但是如果你的源代码结构非常复杂,一个更好的节省时间的解决方案可能会在源计算机上压缩整个东西,然后ftp包,最后在远程机器上解压缩(再次通过ssh连接)。

我知道这不是一个通用的解决方案:事实上,在远程机器上ssh并不总是可行的。但对我而言,这是唯一可能的解决方法。

+0

感谢您的建议,最后我做了之前的ssh命令来创建文件夹结构和另一个之后将上传的文件移动到正确的目录。对于perl正则表达式语法,我使用它,但我找不到在perl正则表达式和其他tFtpPut组件之间切换的方式。 –

+0

您应该在“文件”表格上方看到一个标记为“使用Perl5正则表达式作为文件掩码”的复选框。这就是魔术。 –

+0

tFTPPut组件中没有这样的框。但我正在使用Talend Studio 5.2.0版本,可能是一项新功能。 –