使用fpsync为文件复制提速

背景
在文件备份与文件迁移的场景下,rsync 工具最为常用,然而在海量的小文件场景中,所以效率并不理想(rsync为单线程同步工具)。所以需要一些奇技淫巧来提高复制的效率--使用fpsync。
模拟场景
使用以下命令来模拟数据场景
# mkdir -p /fpsync-test/src/{a..z}/
# seq 1 100000 | parallel "dd if=/dev/urandom of=/fpsync-test/src/{a..z}/{}.bin bs=4K count=1"
未全部执行完成,中途取消
数据文件状态
# find /fpsync-test/src/ | wc -l
147667
# du -sh /fpsync-test/src/
581M /fpsync-test/src/
工具使用
使用非奇技淫巧耗时
# time rsync --archive --perms --owner --group --xattrs --acls --recursive --delete --compress --ignore-errors --progress --log-file=/tmp/rsync.log --quiet /fpsync-test/src/ /fpsync-test/dst
real 1m52.061s
user 0m19.230s
sys 0m12.382s
奇技淫巧耗时
# time fpsync -v -n $(nproc --all) -o "-lptgoD -v --numeric-ids" /fpsync-test/src/ /fpsync-test/dst/
1738503801 ===> Job name: 1738503801-24923
1738503801 ===> Analyzing filesystem...
1738503803 ===> Waiting for sync jobs to complete...
1738503872 <=== Parts done: 74/74 (100%), remaining: 0
1738503872 <=== Time elapsed: 71s, remaining: ~0s (~0s/job)
1738503872 <=== Fpsync completed without error.
real 1m10.964s
user 0m9.227s
sys 0m15.711s
机器核数为2,效果不算过于明显。
注意要点
- fpsync工具不具备--delete功能,可以全量复制使用fpsync,增量使用rsync