如何使用 curl 命令通过 HTTPS 递归将包含目录和文件的目录上传到服务器?

如何使用 curl 命令通过 HTTPS 递归将包含目录和文件的目录上传到服务器?

这是我正在使用的命令:

curl --insecure -i https://XX.XXX.XXX.XX/project/conatinername/foldertobeuploaded/${file}.html -X PUT -H "Content-Type: text/html charset=UTF-8; -H "Content-Length:0" -H "X-Auth-Token: $token" -T /home/folder/${file}.html

我想将整个目录上传到我托管的对象服务。另外,我想提供一个 switch case,它可以帮助我根据内容类型上传每个文件。

这是 sh 文件

for file in /home/folder/*
 if [ ${extension} == "html" ];
  do
        curl --insecure https://10.147.202.80:8081/swift/v1/JFSTechBackup/${file} -X PUT -H "Content-Type: text/html charset=UTF-8; -H "Content-Length:0" -H "X-Auth-Token: $token" -T /home/folder/${file}

 elif [ ${extension} == "css" ]; then
   do
         curl --insecure https:/home/folder/${file} -X PUT -H "Content-Type: text/css -H "X-Auth-Token: $token" -T /home/folder/${file}
 else if [ ${extension} == "png" ]; then
   do
        curl --insecure https:/home/folder/${file} -X PUT -H "Content-Type: image/png -H "X-Auth-Token: $token" -T /home/folder/${file}

fi

答案1

我不会尝试重写你的脚本,而是以递归方式查找所有可以使用的文件find,例如查找所有常规文件

find directory -type f

或者查找所有非目录的内容

find directory \! -type d

然后,您可以对每个项目运行一些命令,xargs这会很棒(这里使用空分隔的名称)

find directory \! -type d -print0 | xargs -0 curl ...

如果您希望文件扩展名检查和处理,那么您可以find对每种-name *.extension类型使用单独的扩展名,或者使用类似 while read 循环的方法

find directory \! -type d | while read onthisfile; do echo Processing "$onthisfile; done

相关内容