为什么在本地复制修改后的文件时没有更快的同步?

时间:2015-03-30 10:57:22

标签: rsync

$ dd if=/dev/urandom of=1 bs=1048576 count=3
3+0 records in
3+0 records out
3145728 bytes transferred in 0.263337 secs (11945641 bytes/sec)
$ rsync -avz 1 2
building file list ... done
1

sent 3147373 bytes  received 42 bytes  6294830.00 bytes/sec
total size is 3145728  speedup is 1.00
$ dd if=/dev/urandom of=new_prefix bs=1048576 count=3
3+0 records in
3+0 records out
3145728 bytes transferred in 0.276985 secs (11357037 bytes/sec)
$ cat 1 >> new_prefix
$ rsync -avz new_prefix 2
building file list ... done
new_prefix

sent 6294646 bytes  received 42 bytes  4196458.67 bytes/sec
total size is 6291456  speedup is 1.00

为文件添加前缀时,为什么我没有收到任何加速? AFAIK,rsync不应仅仅为就地修改产生加速。

1 个答案:

答案 0 :(得分:0)

所以你正在做的是:

  1. 使用rsync将本地文件1复制到2

  2. 创建一个与new_prefix相同但在开始时插入更多数据的新文件1

  3. new_prefix复制到2之上。

  4. 考虑rsync必须执行的操作,以执行第3步。

    请记住,没有操作系统界面可以说"在文件的开头插入数据":唯一的选择是重写整个文件2。因此rsync必须读取整个new_prefix文件,然后编写整个2。 IO是限制因素,并没有神奇的方法。

    如果文件2是远程的,那么librsync可以利用相似性来发送更少的网络流量,并且可能会显示加速。