Chinaunix首页 | 论坛 | 博客
  • 博客访问: 299782
  • 博文数量: 106
  • 博客积分: 1948
  • 博客等级: 上尉
  • 技术积分: 947
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-27 00:11
文章分类

全部博文(106)

文章存档

2014年(1)

2013年(14)

2012年(61)

2011年(30)

分类: LINUX

2012-02-15 17:17:45

rsync深入研究
2011-06-10 22:08

1,默认配置下,rsync的目录是只读的,除非你显示的注明 read only = no

2,同步软链接出现的问题---/rsyncd-munged/

      如果rsync服务器提供的目录可写,并且设置use chroot = no,那么就会出现这样的问题,在软链接地址前多了/rsyncd-munged/

      如果rsync服务器提供的目录可写,并且设置use chroot = yes,那么问题就可以解决。

      原因:默认情况下,rsync的目录是只读的,因此同步的时候,安全机制的干预较少,出现的问题较少。

                如果设置rsync的目录可写后,rsync的安全机制就进行干预了,会防止恶意破坏rsync的服务器目录,因此默认会在软链接前面

                加上/rsyncd-munged/,防止越权操作。

3,软链接同步问题

      a,把软链接当作软链接来同步,使用命令-l

      b,把软链接当作目录来同步,使用命令-L

      c,不同步软链接,不使用上述命令

4,rsync同步目录技巧

     a,同步命令   host::test/test/   /home/test/    直接将host::test/test/下面的文件同步到/home/test/下,因此两个目录是完全一致的。

     b,同步命令   host::test/test/   /home/test     直接将host::test/test/下面的文件同步到/home/test/下,因此两个目录是完全一致的。

     c,同步命令   host::test/test   /home/test      直接将host::test/test/下面的文件同步到/home/test/test/下,因此两个目录是不一致的。

     d,同步命令   host::test/test   /home/test/      直接将host::test/test/下面的文件同步到/home/test/test/下,因此两个目录是不一致的。

     总结,同步目录host::test/test/是说将该目录下面的内容不同到指定目录中;

               同步目录host::test/test 是说将该目录同步到指定目录中;

     至于说后面的指定目录有没有"/"真的不重要,都可以;

5,rsync基于ssh方式传输文件

     rsync -av root@miotour.com:/tmp/test.ios   /tmp/  指定帐号

     rsync -av miotour.com:/tmp/test.ios   /tmp/     使用默认的帐号

6,rsync基于ssh方式传输和基于socket方式传输速度对比,sockey方式明显胜出,速度提升38%

     为了防止同步同一个文件造成误差,因此同时生成两个文件

     dd if=/dev/zero of=/home/test.iso bs=1G count=10

     dd if=/dev/zero of=/home/test1.iso bs=1G count=10

     time /usr/local/bin/rsync -av --progress  miotour.com::miotour/test.iso .      real    1m31.417s

     

    time /usr/local/bin/rsync -av --progress   miotour@miotour.com:/home/test1.iso  .   real    2m28.177s

    

 7,限速 单位KB/S

      --bwlimit=40960  限速为40MB/S   

 8,文件修改后的传输方式

       dd if=/dev/zero of=/home/test.iso bs=100M count=20

       第一次传输情形如下:

       

       echo "jiaozhenqing">>test.iso   ls命令检查确认文件更新

       可以看到,received 199105 bytes;而整个文件传输的话,传输了2097408128bytes,传输的体积占据文件体积的万分之一

       

9,传输压缩和不压缩的区别

      传输压缩的话,速度慢,时间长;

      传输不压缩的话,速度快,时间短,节省38%的时间。

     疑问?压缩和不压缩传输的文件体积基本相似 文件体积是2097152026这个没有争议

     并且该文件可以被gzip压缩到2035286的体积,不存在类似图片等无法压缩的情况

      time /usr/local/bin/rsync -avz --progress  压缩传输

      time /usr/local/bin/rsync -av --progress    不压缩传输

      

      

10,添加-W(--whole-file)参数后,不进行增量检测,如果文件发生变化,就会全量传输,而非变动部分传输。

11,指定检验算法使用的块尺寸,默认是700字节  -B, --block-size=SIZE

       time /usr/local/bin/rsync -av --progress -B 2000

       默认尺寸的话,传输了199111 bytes。设置为2000字节的话,传输了4194455bytes;

       增大块尺寸,并没有明显的收益,反而增加了传输时间和传输体积,不可取。

       下面是默认尺寸的

       

      time /usr/local/bin/rsync -av --progress -B 2000

       

       time /usr/local/bin/rsync -av --progress -B 400000

       

 12,rsync开启强制对文件传输进行校验性能对比

        time /usr/local/bin/rsync -av --progress -c  开启后,文件传输体积稍微增大一点点,可忽略不计,但传输时间明显延长27%

        time /usr/local/bin/rsync -av --progress 

        time /usr/local/bin/rsync -av --progress -zc 如果说同时开启了c和z呢,时间增加一倍,传输体积居然也增加了,不可理解。

        

        

        

13,待解决问题

        

14,rsync同步单个文件时候的行为

     

    我同步一个文件到web目录下,并且显示web目录已经达到了1.2GB了

    

   执行ls命令啥也看不到,执行ls -al则看到了一个隐藏文件,原来rsync同步单个文件的时候,在没有完全同步之前,是先搞成隐藏文件来处理的

阅读(2140) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~