分类: LINUX
2012-02-15 17:17:45
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同步单个文件的时候,在没有完全同步之前,是先搞成隐藏文件来处理的 |