有人用过 rclone rcd 吗,我通过 http 请求的方式来添加复制文件夹任务,但是最终的复制结果不会在目标地址创建一个同名文件夹,而是直接将源文件夹下的内容放到指定路径,这和直接运行 rclone copy
的效果是不一样的。
具体来说,通过 rclone copy path/to/src/dir dest:/path/
,拷贝的结果是,在 dest:/path/
下创建 dir
文件夹,然后里面包含所有内容;而通过 http 请求的方式,不会创建 dir
文件夹,而是直接把文件夹中的内容放到 dest:/path/
下。
使用的是 sync/copy,我用到的代码:
public static boolean copy(String src, String dst) {
String host = ConfigUtil.CONFIG.getRcloneHost();
String username = ConfigUtil.CONFIG.getRcloneuserName();
String password = ConfigUtil.CONFIG.getRclonePassword();
JsonObject obj = new JsonObject();
obj.addProperty("srcFs", src);
obj.addProperty("dstFs", dst);
obj.addProperty("createEmptySrcDirs", true);
try {
return HttpRequest.post(host + "/sync/copy")
.basicAuth(username, password)
.header("Content-Type", "application/json")
.body(GsonStatic.toJson(obj))
.thenFunction(res -> {
Assert.isTrue(res.isOk(), res.body());
log.info("rclone copied src: {}, dst: {}", src, dst);
return true;
});
} catch (Exception e) {
log.error("rclone copy error: {}", e.getMessage());
return false;
}
}
我在 rclone 论坛里也开了一个帖子:rclone forum
1
xxx027 106 天前 via Android
楼主你确定 copy 命令会创建 dir 目录吗?应该是和 rcd 一样的直接把 dir 目录下的所有文件复制了但不会创建出 dir 目录
一般我都是 rclone copy path/to/src/dir dest:/path/dir 手动加上目录 或者 rclone copy path/to/src dest:/path/ --include "/dir/**" |
2
xietianxiao OP @xxx027 你是对的,抱歉我没仔细测试。跟以前的直觉混淆了
|
![]() |
3
butanediol2d 105 天前
我的印象里,rclone 这个确实不太符合直觉,大部分的命令行软件对于路径都是这样处理的:
- /path/to/dir 复制的是 dir 整个目录 - /path/to/dir/ 复制的是目录里的内容 但是 rclone 不符合这个惯例,它不管最后有没有 /,一律只取里面的文件。 |