rclone rcd 通过 http post 来控制, copy 文件夹不会创建上层目录

109 天前
 xietianxiao

有人用过 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

1027 次点击
所在节点    问与答
3 条回复
xxx027
109 天前
楼主你确定 copy 命令会创建 dir 目录吗?应该是和 rcd 一样的直接把 dir 目录下的所有文件复制了但不会创建出 dir 目录
一般我都是 rclone copy path/to/src/dir dest:/path/dir 手动加上目录
或者 rclone copy path/to/src dest:/path/ --include "/dir/**"
xietianxiao
109 天前
@xxx027 你是对的,抱歉我没仔细测试。跟以前的直觉混淆了
butanediol2d
108 天前
我的印象里,rclone 这个确实不太符合直觉,大部分的命令行软件对于路径都是这样处理的:

- /path/to/dir 复制的是 dir 整个目录
- /path/to/dir/ 复制的是目录里的内容

但是 rclone 不符合这个惯例,它不管最后有没有 /,一律只取里面的文件。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1132572

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX