2017-03-22 114 views
0

ファイルを自分の次のクラウドサーバーにアップロードします。問題は、私はエラーがあるということです。最初のcurlコマンドでディレクトリを作成する必要があります。curlまたはWebDavでディレクトリを再帰的に作成する方法は?

curl -u "$USER":"$PW" -X MKCOL "https://MYSERVER/remote.php/dav/files/$USER/$MANY_DIRECTORIES" 
curl -u "$USER":"$PW" -T "$FILE" "https://MYSERVER/remote.php/dav/files/$USER/$MANY_DIRECTORIES/$FILE" 

$MANY_DIRECTORIESには1つのディレクトリが含まれています。しかし、この変数が例えば/root/deep/deeperdeepが、私はこのエラーを得た存在しません:

<?xml version="1.0" encoding="utf-8"?> 
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns"> 
    <s:exception>Sabre\DAV\Exception\Conflict</s:exception> 
    <s:message>Parent node does not exist</s:message> 
</d:error> 

2番目のコマンドは、このエラーがスローされます。

<?xml version="1.0" encoding="utf-8"?> 
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns"> 
    <s:exception>Sabre\DAV\Exception\NotFound</s:exception> 
    <s:message>File with name //test could not be located</s:message> 
</d:error> 

は、どのように私は、ファイルをアップロードする再帰的なディレクトリを作成することができますか?

ありがとうございました。

+0

あなたは1つずつ作成します。 –

+0

@JulianReschke:ありがとう。私はループを通過します。 – cy221

答えて

0

再帰的なディレクトリを作成するオプションがないので、変数を配列に分割し、ディレクトリを1つずつ作成します。

IFS='/' read -r -a array <<<"$2" 
for el in "${array[@]}" 
do 
     TEMP=$TEMP/$el 
     curl -u "$USER:$PW" \ 
     -X MKCOL \ 
     "https://MYSERVER/remote.php/dav/files/$USER$TEMP" 
done 

curl -u "$USER:$PW" \ 
     -T "$1" "https://MYSERVER/remote.php/dav/files/$USER/$2/$1" 
関連する問題