V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xietianxiao
V2EX  ›  问与答

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

  •  
  •   xietianxiao · 106 天前 · 1024 次点击
    这是一个创建于 106 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    3 条回复    2025-05-19 23:24:05 +08:00
    xxx027
        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/**"
    xietianxiao
        2
    xietianxiao  
    OP
       106 天前
    @xxx027 你是对的,抱歉我没仔细测试。跟以前的直觉混淆了
    butanediol2d
        3
    butanediol2d  
       105 天前
    我的印象里,rclone 这个确实不太符合直觉,大部分的命令行软件对于路径都是这样处理的:

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

    但是 rclone 不符合这个惯例,它不管最后有没有 /,一律只取里面的文件。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3459 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:42 · PVG 18:42 · LAX 03:42 · JFK 06:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.