$ 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
不应仅仅为就地修改产生加速。
答案 0 :(得分:0)
所以你正在做的是:
使用rsync将本地文件1
复制到2
。
创建一个与new_prefix
相同但在开始时插入更多数据的新文件1
。
将new_prefix
复制到2之上。
考虑rsync必须执行的操作,以执行第3步。
请记住,没有操作系统界面可以说"在文件的开头插入数据":唯一的选择是重写整个文件2
。因此rsync必须读取整个new_prefix
文件,然后编写整个2
。 IO是限制因素,并没有神奇的方法。
如果文件2是远程的,那么librsync可以利用相似性来发送更少的网络流量,并且可能会显示加速。