cubic_client's People
cubic_client's Issues
日志记录到日志文件
文件路径和 metadata 解密太慢了
大概一秒钟几千个,我 21 万个文件要 1 分钟以上
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
user、token、加密的密钥、备份的路径可以写在配置文件里
也可以支持多组这种信息
文件 metadata 改变而修改时间没变时不重新读取文件
增强安全性与完整性检查
- 增强安全性:对于路径和 metadata,使用每次 nonce 不同的加密。这样修改一个文件时,在服务端看来是删除了旧文件并且新增了名字完全不同的文件
- 增强完整性检查:metadata 里带上 path 和 block hash list 的签名,保证三者绑定,其中任意一者不能被换掉
可选:
- block 总是加 padding 到 4K 的倍数以减小文件大小附带的信息,路径也做类似处理
- 对 tree 整体进行签名,保证 tree 中的条目不会被删掉或者用旧版本替换
更好地处理网络(SDK)的异常
而不是直接崩掉
显示速度、估计剩余时间等信息
本地缓存目录树
若服务器端目录树没有改变则无需重新下载
上传一半 ctrl+c 时也可以把已上传的 block hash 缓存到本地(续传时记得检查远程仍然存在)
使用密码加密密钥,而不是直接把密码作为密钥
这样就可以随时修改密码,而无需改变文件
甚至可以每个文件使用不同的密钥进行加密,这样就可以用于分享一个文件同时保证其他文件的安全性(但是就不能秒传了)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.