yabostone / picgo-plugin-rclone

调用rclone命令实现上传
Apache License 2.0
17 stars 4 forks source link

rclone 在 s3 源的判断上有缺陷,望适配 #8

Open CornWorld opened 1 year ago

CornWorld commented 1 year ago

https://github.com/rclone/rclone/issues/5119

简单来说,rclone 在 sync / copy 操作时不会主动检查 bucket 是否存在,而是在 PUT 请求中始终添加 CreateBucket 标签,很容易因为 Token 权限不足而触发 403 返回。

CornWorld commented 1 year ago

目前我对 execFilefunc 添加 --s3-no-check-bucke 参数来解决问题。

下面是对编译后代码进行修改后的结果。

        var up = utils_1.execFilefunc("rclone", ['sync', '-P', rcloneLocalURI, rcloneRemoteDir, '--s3-no-check-bucket']);
        ListExec.push(up);
        if (userConfig.localPostion) {
            var lo = utils_1.execFilefunc("rclone", ['sync', '-P', rcloneLocalURI, rcloneLocalPosition]);
            ListExec.push(lo);
        }
        if (userConfig.backupName1) {
            var up1 = utils_1.execFilefunc("rclone", ['sync', '-P', rcloneLocalURI, rcloneBackupDir1, '--s3-no-check-bucket']);
            ListExec.push(up1);
        }
        if (userConfig.backupName2) {
            var up2 = utils_1.execFilefunc("rclone", ['sync', '-P', rcloneLocalURI, rcloneBackupDir2, '--s3-no-check-bucket']);
            ListExec.push(up2);
        }
        if (userConfig.backupName3) {
            var up3 = utils_1.execFilefunc("rclone", ['sync', '-P', rcloneLocalURI, rcloneBackupDir3, '--s3-no-check-bucket']);
            ListExec.push(up3);
        }
yabostone commented 10 months ago

您好,这个属于rclone的最佳实践和feature的问题,默认在使用rclone的插件的时候,需要提前在命令行中检查,创建对应的可用的存储库,并判断自己的token可以进行文件的增删改查。

CornWorld commented 10 months ago

你好! 虽然如此,但出现此问题时,排查花费了很多时间。 可以添加更多利于排查此错误的错误输出,或者添加一些相关提醒吗?