Git Product home page Git Product logo

cubic_client's People

Contributors

zzh1996 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

cubic_client's Issues

TODO (从群里迁移过来)

  • user、token、加密的密钥、备份的路径可以写在配置文件里
  • 上传 block 增加进度显示
  • 增加 no_early_check 选项,启用时不提前计算文件分块的 hash 并查重,而是得到文件列表后开始这样的循环:积攒总大小 upload_max_size 的块同时计算 hash、查重、上传服务器不存在的块。这样有利于第一次上传极大量的文件
  • 上传一半 ctrl+c 时把已完整上传的文件 add 到服务器的临时路径里,这样可以(在本地不创建临时文件的情况下)让下次不用再算一遍已上传文件的 hash,并且保证在服务器上分块被引用以防被删
  • 处理 SDK 网络请求可能的异常,并增加重试机制
  • path 和 meta 使用每次不同的加密,并且增加对 block hash list 的签名
  • 日志写入文件里
  • 现在 metadata 变化时重新扫描整个文件。准备改成只有 mtime 变时(要不要考虑 size?)重新扫描文件,而如果其他信息改变,例如 mode,直接重新上传 metadata 而不扫描文件
  • 检查上传时 block hash 和预处理时 block hash 不一样的问题
  • 改变处理流程:
blocks = []
tree_diff = []
获取远程目录
递归 stat 本地目录,边走边:
    对于更新了的文件,读取并放入 blocks 和 tree_diff
    当 blocks 攒得足够多,内存要装不下时,上传它们并清空 blocks
    如果因为本地目录结构变化导致递归时出错,忽略错误继续
上传 tree_diff

增强安全性与完整性检查

  • 增强安全性:对于路径和 metadata,使用每次 nonce 不同的加密。这样修改一个文件时,在服务端看来是删除了旧文件并且新增了名字完全不同的文件
  • 增强完整性检查:metadata 里带上 path 和 block hash list 的签名,保证三者绑定,其中任意一者不能被换掉

可选:

  • block 总是加 padding 到 4K 的倍数以减小文件大小附带的信息,路径也做类似处理
  • 对 tree 整体进行签名,保证 tree 中的条目不会被删掉或者用旧版本替换

本地缓存目录树

若服务器端目录树没有改变则无需重新下载
上传一半 ctrl+c 时也可以把已上传的 block hash 缓存到本地(续传时记得检查远程仍然存在)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.