A melhor maneira de enviar dados para um servidor HTTP é usar PUT. Mas esteja ciente de que esta opção requer que o servidor saiba como receber um fluxo HTTP PUT, então você deve ter um script na maioria das situações.
Não tenho certeza se é possível enviar um diretório ou não, mas, para fazer o upload de dados para um servidor usando cURL, é necessário seguir as etapas abaixo:
HTTP:
curl --upload-file yourUploadFile [HTTP Address]
HTTPS:
curl --user login:password --upload-file your.file.txt [HTTPS Address]
N.B. no modo de upload HTTPS, adicione --insecure
se você não quiser que o cURL verifique a cadeia de certificados.
Espero que isso possa ajudar.