通过CURL上传多个文件

时间:2016-04-17 12:03:25

标签: bash curl travis-ci

我希望通过将构建的工件上传到我的服务器来自动化我的部署过程(使用TravisCI),这会自动注册这些上传并将它们移动到需要的地方。

为此,我编写了一个在构建过程成功后执行的shellcript:

find $TRAVIS_BUILD_DIR/dist/*.tar -type f -exec curl --ftp-create-dirs -T {} -u user:pass ftp://my.server.com/uploads/{} \;

最后{}(在目标路径中)会导致问题。在TravisCI中,这些文件通常位于路径/home/travis/build/owner/repo/dist中,因此将{}添加到目标也将创建这些目录:

uploads/home/travis/build/owner/repo/dist/myartifact.tar

如果我删除{},我最终会遇到一堆FTP 553错误。有没有办法让find只填充文件名而不是整个路径?

1 个答案:

答案 0 :(得分:0)

尝试使用xargs和参数替换:

find . -type f | xargs -L 1 bash -c 'curl --ftp-create-dirs -T  $1 -u user:pass ftp://my.server.com/uploads/${1##*/}' \;