天天看点

rsync使用小结

<code>参数说明</code>

<code>v</code><code>:详细提示</code>

<code>a:以archive模式操作,复制目录、符号连接,等价于 -rlptgoD 。</code>

<code>z:压缩</code>

<code>u:只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时</code>

<code>P:是综合了–partial –progress两个参数,</code>

<code>所以此时的</code><code>rsync</code><code>支持了断点续传</code>

<code>1、主机a启动</code><code>rsync</code><code>服务:</code>

<code>/usr/bin/rsync</code> <code>--daemon --address=192.168.1.250</code>

<code>配置文件默认:</code><code>/etc/rsyncd</code><code>.conf</code>

<code>没有这个配置可以自己写一个</code>

<code>----</code>

<code>uid = nobody</code>

<code>gid = nobody</code>

<code>use chroot = no</code>

<code>max connections = 10</code>

<code>timeout = 600</code>

<code>pid </code><code>file</code> <code>= </code><code>/var/run/rsyncd</code><code>.pid</code>

<code>lock </code><code>file</code> <code>= </code><code>/var/run/rsyncd</code><code>.lock</code>

<code>log </code><code>file</code> <code>= </code><code>/var/log/rsyncd</code><code>.log</code>

<code>[模块名a]</code>

<code>path = 目录</code><code>/a/b/c</code>

<code>read</code> <code>only = </code><code>yes</code>

<code>list = no</code>

<code>hosts allow = 允许的ip,最好是内网</code>

<code>hosts deny = *</code>

<code>uid = root</code>

<code>gid = root</code>

<code>注意,使用list = no 否则可以直接通过</code><code>rsync</code> <code>ip:: 列出模块名</code>

<code>2、主机b同步主机a</code>

<code>rsync</code> <code>--avzP ipa::模块名a  目录</code><code>/x/y/z</code>

<code>注意::和:的区别, 目录最后有没有斜杠的区别。</code>

<code>3、注意测试src 和 dest 路径对应的文件夹是否符合预期;例如上述例子是将</code>

<code>/a/b/c</code> <code>同步到本地的 </code><code>/x/y/z</code>    <code>目录z下面放的是目录c,并非是c目录下的文件,即:</code>

<code>/x/y/z/c/</code>

<code>刚测试了下,如果路径a配置的是</code><code>/a/b/c/</code>   <code>则同步的是</code><code>/x/y/z/</code><code>(c目录下的文件)</code>

<code>也就是要注意路径最后有没有斜杠/</code>

<code>测试用例:</code>

<code>~]$ </code><code>mkdir</code> <code>d{1,2}/{a,b,c} -p</code>

<code>~]$ </code><code>ls</code>

<code>d1  d2</code>

<code>~]$ </code><code>rsync</code> <code>d1 d2</code>

<code>skipping directory d1</code>

<code>~]$ </code><code>rsync</code> <code>-avzP d1 d2</code>

<code>sending incremental </code><code>file</code> <code>list</code>

<code>d1/</code>

<code>d1</code><code>/a/</code>

<code>d1</code><code>/b/</code>

<code>d1</code><code>/c/</code>

<code>sent 96 bytes  received 28 bytes  248.00 bytes</code><code>/sec</code>

<code>total size is 0  speedup is 0.00</code>

<code>~]$ tree d2</code>

<code>d2</code>

<code>├── a</code>

<code>├── b</code>

<code>├── c</code>

<code>└── d1</code>

<code>    </code><code>├── a</code>

<code>    </code><code>├── b</code>

<code>    </code><code>└── c</code>

<code>7 directories, 0 files</code>

<code>~]$ </code><code>rsync</code> <code>-avzP d1/ d2/</code>

<code>./</code>

<code>sent 78 bytes  received 18 bytes  192.00 bytes</code><code>/sec</code>

<code>~]$ </code><code>rsync</code> <code>-avzP --delete d1/ d2/</code>

<code>deleting d1</code><code>/c/</code>

<code>deleting d1</code><code>/b/</code>

<code>deleting d1</code><code>/a/</code>

<code>deleting d1/</code>

<code>sent 75 bytes  received 15 bytes  180.00 bytes</code><code>/sec</code>

<code>└── c</code>

<code>3 directories, 0 files</code>

<code>4、限速</code>

<code>GB级别的网卡,调整限速为600Mbps = 60000KBps</code>

<code># rsync -avzP --delete --bwlimit=60000 192.168.1.250::upload /home/web/upload &gt;/dev/null</code>

<code>http:</code><code>//drops</code><code>.wooyun.org</code><code>/papers/161</code>

<code>5、</code><code>rsync</code><code>和inotifywait的排除选项</code>

<code>#!/bin/bash  </code>

<code>#</code>

<code># rsync -avzP --exclude="*.log" --exclude="*.zip.*" --exclude="*.csv.*" --exclude="*.xls.*" /home/web/log/exportlog/ 192.168.5.72::s72log_export_pub</code>

<code>src=</code><code>/home/web/log/exportlog/</code>

<code>dest=s72log_export_pub</code>

<code>ip=192.168.5.72</code>

<code>/usr/local/bin/inotifywait</code> <code>-mr -e close_write --exclude </code><code>'^.*(log|csv\..*|xls\..*|zip\..*)$'</code> <code>$src | </code><code>while</code> <code>read</code> <code>file</code>

<code>do</code>

<code>        </code><code>echo</code> <code>"[+] `date` start"</code>

<code>        </code><code>echo</code> <code>"[-] $file"</code>

<code>        </code><code>rsync</code> <code>-avzP --exclude=</code><code>"*.log"</code> <code>--exclude=</code><code>"*.zip.*"</code> <code>--exclude=</code><code>"*.csv.*"</code> <code>--exclude=</code><code>"*.xls.*"</code> <code>$src $ip::$dest</code>

<code>        </code><code>echo</code> <code>"[-] `date` end"</code>

<code>done</code>

<code>6、注意</code><code>rsync</code><code>排除目录的区别</code>

<code># rsync -avP --delete 192.168.1.50:/media/ /mnt/ --exclude="boot"</code>

<code># rsync -avP --delete 192.168.1.50:/media/ /mnt/ --exclude="/boot"</code>

<code># rsync -avP --delete 192.168.1.50:/media/ /mnt/ --exclude="boot/"</code>

<code># rsync -avP --delete 192.168.1.50:/media/ /mnt/ --exclude="/boot/"</code>

<code>7、如果使用 -z 参数,则可能导致传输速度变慢</code>

<code>8、使用密码验证</code>

<code>服务端:</code>

<code># cat /etc/rsyncd.conf</code>

<code>-----</code>

<code>use chroot = </code><code>yes</code>

<code>max connections = 200</code>

<code>timeout=600</code>

<code>#syslog facility = local5</code>

<code>pid </code><code>file</code> <code>= </code><code>/var/log/rsync/rsyncd</code><code>.pid</code>

<code>log </code><code>file</code> <code>= </code><code>/var/log/rsync/rsyncd</code><code>.log</code>

<code>lock </code><code>file</code><code>= </code><code>/var/log/rsync/rsync</code><code>.lock</code>

<code>[data]</code>

<code>        </code><code>path = </code><code>/data</code>

<code>        </code><code>refuse options =  delete</code>

<code>        </code><code>comment = backup</code>

<code>        </code><code>read</code> <code>only= no</code>

<code>        </code><code>uid = root</code>

<code>        </code><code>gid = root</code>

<code>        </code><code>#ignore errors</code>

<code>        </code><code>auth </code><code>users</code> <code>= backup</code>

<code>        </code><code>secrets </code><code>file</code> <code>= </code><code>/etc/rsyncd</code><code>.secrets</code>

<code>        </code> 

<code># cat /etc/rsyncd.secrets </code>

<code>backup:111111</code>

<code># chmod 600 /etc/rsyncd.secrets </code>

<code># /usr/bin/rsync --daemon --address=192.168.1.100</code>

<code>客户端:</code>

<code># cat /etc/rsync.pass</code>

<code>111111</code>

<code># chmod 600 /etc/rsync.pass</code>

<code># rsync -av --no-o --no-g --password-file=/etc/rsync.pass /tmp/1 [email protected]::data/backup/ovirt/engine</code>

本文转自 pcnk 51CTO博客,原文链接:http://blog.51cto.com/nosmoking/1595639,如需转载请自行联系原作者

继续阅读