当目标路径存在时,curl SFTP 重命名
curl SFTP rename when destination path exists
我必须使用 SFTP 传输和 libcurl 定期更新服务器上的文件。从许多来源和个人经验中,我发现当目标路径指向已经存在的文件时,使用 curl 和 SFTP 重命名命令会失败。但是 sftp 客户端不是这样工作的 - 相同的命令会覆盖现有文件。难道真的没有办法在 libcurl 上强制这种行为吗?我知道先删除文件的选项,但随之而来的是,如果文件不存在,它就会失败,这对我来说仍然是一种解决方法而不是解决方案。
编辑:libcurl 提出了libssh2_sftp_rename_ex的LIBSSH2_SFTP_RENAME_OVERWRITE标志,但它似乎不适用于某些版本的协议/服务器
解决方法:添加命令"*rm",指出 rm 可能失败
我很确定原因是在 curl 无法通过 SFTP 重命名文件的情况下,这是因为服务器拒绝了它。我们已经看到它有时会被一些服务器发生,即使 curl 发送"强制覆盖"选项。
其他客户端可能工作的原因可能是它们在后台执行 rm + mv,或者可能是因为它们与服务器协商不同的 SFTP 协议版本(从而获得不同的行为)。
相关文章:
- 在C++中使用cURL和多线程
- 如何检查cURL是否成功登录?c ++
- 带有进度表的 curl 多接口程序
- 如何从远程 SFTP 服务器获取 HH-MM-SS 时间戳格式的文件列表
- 使用 CURL 上传构建
- 使用 curl_easy_cleanup(curl) 时收到未经处理的 NULL 异常
- Curl with vcpkg
- 使用 libssh 从 SFTP 服务器下载文件并使用 C++ 将其写入 ofstream?
- curl 请求的用户输入
- 如何使用 curl 将 POST 请求从 python 重写为 C++
- 使用 sftp_open() 使用 C++ 中的 SFTP libssh 将文件从本地复制到远程时,File 返回 N
- 在 C++/C 中使用 CURL 发出带有数据文件的 GET HTTP 请求
- Chilkat SFTP 文件修改时间不与上传更新
- 如何将带有 -F 选项的 curl 命令转换为 libcurl
- 从 C++ 调用 cURL 命令会返回意外的错误代码,如 1792 和 6656
- C++:如何通过 curl 调用使用 HTTP post 请求发送二进制数据(protobuf 数据)
- C++ CURL 库链接器错误,但包含正确的库
- C++中的 cURL POST 请求
- CURL SFTP support with Windows SChannel?
- 当目标路径存在时,curl SFTP 重命名