1 min read

使用fpsync为文件复制提速

使用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