linux之间同步文件有两种方式rsync与scp。
dashboard主机传递到mas2主机:
先看scp
先在mas2主机上保证待传递的文件不存在,然后在dashboard主机输入命令:
time scp -qr repository root@mas2:/usr/nci/;time scp -qr repository root@mas2:/usr/nci/;time scp -qr repository root@mas2:/usr/nci/;
注意,在dashboard连续执行了三次time scp -qr repository root@mas2:/usr/nci/,其中第一次是在mas2不存在文件夹repository情况下执行的,第二次和第三次是在在mas2存在文件夹repository情况下执行的。
三次实际所花时间:12.548秒,17.484秒,10.102秒,三者几乎在一个量级别,考虑到系统当时的负载差异,可视为三次执行时间大致相同。
先看rsync
同理,先在mas2主机上保证待传递的文件不存在,然后在dashboard主机输入命令:
time rsync -aCvq repository root@mas2:/usr/nci/;time rsync -aCvq repository root@mas2:/usr/nci/;time rsync -aCvq repository root@mas2:/usr/nci/;
三次实际所花时间:14.265秒,0.899秒,0.515秒,第一次是新建,第二次,第三次是在文件夹存在的情况下同步的。可以看出第二次第三次执行时间远远小于第一次。
sync和scp在文件夹均不存在时,执行时间相差不大,但是文件夹存在的情况下差异很大。原因是scp是复制:若mas2文件不存在则新建,若存在则覆盖,若mas2上有而Dashboard主机没有,则不改变。可以理解为scp为“复制”。而rsync则在文件在存在于两主机时,比较两文件是够相同,相同的话,就什么都不做,若存在差异就直接更新。
简单的说rsync只对差异文件做更新。
PS:注意sync的命令,-c与-C有差异,且-c执行时间更长。
参考:scp rsync speed test
Linux rsync命令详解