我一直在使用rsync
脚本将一台主机上的数据与另一台主机上的数据同步。数据中有许多小文件,几乎占 1.2TB。
为了同步这些文件,我一直在使用以下rsync
命令:
rsync -avzm --stats --human-readable --include-from proj.lst /data/projects REMOTEHOST:/data/
Run Code Online (Sandbox Code Playgroud)
proj.lst 的内容如下:
+ proj1
+ proj1/*
+ proj1/*/*
+ proj1/*/*/*.tar
+ proj1/*/*/*.pdf
+ proj2
+ proj2/*
+ proj2/*/*
+ proj2/*/*/*.tar
+ proj2/*/*/*.pdf
...
...
...
- *
Run Code Online (Sandbox Code Playgroud)
作为测试,我选择了其中的两个项目(8.5GB 数据)并执行了上面的命令。作为一个顺序过程,它需要 14 分 58 秒才能完成。因此,对于 1.2TB 的数据,需要几个小时。
如果我可以rsync
并行处理多个进程(使用&
,xargs
或parallel
),它将节省我的时间。
我尝试使用以下命令parallel
(在cd
ing 到源目录之后),执行时间为 12 分 37 秒:
parallel --will-cite -j 5 rsync -avzm --stats --human-readable {} REMOTEHOST:/data/ ::: …
Run Code Online (Sandbox Code Playgroud)