rclone会将数据分成3类:srcOnly,dstOnly,match
分类的方法是,先读取当前目录下的源数据,然后以同样的名字去对端查看,如果有的话就放到match,如果只有当前目录有的话就放入srcOnly
然后srcOnly的会被放入tobeuploaded的pipe中,pipe的另外一端会有消费者去负责传输,即rclone的文件扫描(checker)和文件传输(transfer)是互相解耦的,
rclone会把每种类型的后端抽象成不同的backend,每个backend有固定要实现的几个接口。
checker进行文件扫描时会进行多个维度的判断,包括MD5、文件名、文件修改时间等,这其中如果有一项对于源端和目标端不相等,则判定为此文件需要传输。但是有一个例外,就是如果文件的文件名和MD5相等,但是文件修改时间不同,此时此文件不会传输,但会通过接口去刷新远端文件的元数据。