同步百万级别以上文件的做法

最近在一个场景下,要同步6百多万个文件,电脑挂机同步了半个月。经过这次实践,实际上、发现根本不需要花那么长时间。

首先先说下文件的构成:
大约1GB的文件大约占0.1%
小于1GB的文件占大约20%
大部分99%文件小于1MB

1、大文件可以充分使用带宽,能够最大发挥带宽的优势。同时也因为要考虑到断点续传,所以分块传输,利用开源软件、挂机同步是必不可少的。

2、小文件,小文件由于无法最大占用带宽,并且单次传输量并不多,平均最大1秒7个。加上文件一致性检查等,小文件花费的时间远远大于大文件同步所需要的时间。


所以建议,所有的小文件可以先通过linux 的命令 find 然后tar 到一个文件里,进行传输。最大地利用带宽。

无奈,我已经同步了14天了,已经不缺这一天了。写这篇文章,也算是警戒下自己多思考,思考!寻找解决问题的最简便方法。

大概的类似于命令:
nohup find ./svn -size -1024 |xargs tar -zcf ./svn.tar.gz &

1024是1kb以下的文件。


当然上面地做法有些抱歉,除了没有好的带宽或者适当地云服务器之外可以这么做。

评论