查看完整版本: [轉貼]介紹一下 rsync 這個同步備份程式

chun 2008-7-26 21:55

[轉貼]介紹一下 rsync 這個同步備份程式

http://www.ntu.beautifulworldco.com/weblog/?p=385<br><br><div class="entry">
                                <p>我用 rsync 這個程式已經有一段時間了,今天終於有時間寫篇文章介紹這個好軟體!</p>
<p><span id="more-385"></span>rsync 就是 remote sync,顧名思義就是可以同步兩台機器上的檔案與目錄,而我會特別喜歡 rsync 的原因就是它可以同步 unix 與 windows 的機器,也就是可以</p>
<p>unix -&gt; unix<br>
unix -&gt; windows<br>
windows -&gt; unix<br>
windows -&gt; windows</p>
<p>而且,很重要的,rsync 支援 SSH,也就是加密傳輸。</p>
<p>也就是說有了 rsync,想要把 windows 上的資料備份到 unix 上,以及把 unix 上的資料回存到 windows
上,就不是很困難的事情了。(不過 unix 上的檔案名稱不能是 unicode 的字元,所以 windows 下有 unicode
檔名的檔案就無法透過 rsync 同步到 unix 上,這不是 rsync 的錯)</p>
<p>也許有人會問,要備份用 ftp、網路芳鄰就好了,為什麼要用 rsync?簡單的說,rsync 可以很快的找出兩個檔案系統的差別,單純
備份/回存 不同的部份,所以速度會比較快。當然,也許還有別人會問「還有其他的軟體呀!」,這我知道,不過其他軟體大多都是同一台 windows
機器的備份(把一個目錄備份到另一個目錄),或是 windows 機器和 windows 機器之間的備份,而我要的是 unix 和
windows 之間使用 SSH 的備份,在不考慮一些商業軟體,像是 Sun Enterprise Backup Software 或是
Netbackup 的情形之下,rsync 是一個簡單好用的軟體。</p>
<p>底下來介紹 rsync 的使用方法,</p>
<p>1. unix -&gt; unix</p>
<p>unix 機器之間的 rsync 是非常簡單的,比如說在 A 機器(192.168.1.1) 上,要把 /work 底下的資料同步到 B 機器(10.0.0.40) 的 /home/work 之下,只要在 A 機器上打這個指令就行了,</p>
<p>rsync -r –size-only -t -l -I -p -o -g -z –stats -v –delete /work 10.0.0.40:/home/work</p>
<p>如果要把 B 機器的資料同步回來也很簡單,打這個指令,</p>
<p>rsync -r –size-only -t -l -I -p -o -g -z –stats -v –delete 10.0.0.40:/home/work /work</p>
<p>以上兩個指令都會問 user 的密碼,不想每次都回答密碼的話請參考這篇文章 <a href="http://www.adj.idv.tw/server/linux_rsync.php">Rsync + SSH — 讓 Server 自動異地備援也加密</a></p>
<p>順便提一下,如果要連過去的 user 是 root,那麼在使用 rsync 的時候可能會失敗,狀況是會問密碼,但是即使輸入正確的密碼也無法連進去。這不是 rsync 的問題,而是 ssh 的問題,因為 ssh 預設是不讓 root login 的。</p>
<p>在此提供 Solaris 上的解決方法。首先去修改 /etc/ssh/sshd_config ,把 PermitRootLogin 後面的 no 改成 yes,然後重新起動 sshd 就行了。</p>
<p>在 Solaris 10 上重新起動 sshd 的方法是 svcadm disable ssh; svcadm enable ssh</p>
<p>2. windows -&gt; unix  和  unix -&gt; windows (假設 windows 的 ip 是 10.0.0.50)</p>
<p>首先去看一下 <a href="http://itefix.no/cwrsync/">rsync windows 版的網頁</a>,下載並且在 windows 上安裝 <a href="http://www.itefix.no/phpws/index.php?module=linkman&amp;LMN_op=visitLink&amp;LMN_id=2">cwRsync Server</a>
(要點 Download cwRsync Server! 而不是 Download cwRsync!),裝完之後修改 C:\Program
Files\cwRsyncServer\rsyncd.conf ,照著裡面的格式自己加上幾個 modules,也就是加上要 備份/回存 的目錄,<br>
<img src="http://www.ntu.beautifulworldco.com/download/public/for_rsync/rsync.conf.jpg"><br>
注意一下 read only,如果是 true 的話就不能回存,是 false 才能回存。另外,文件裡寫說要 Prep a Dir for Upload,不過我自己試的結果,不執行這個步驟也沒問題。</p>
<p>然後啟動 Openssh SSHD 和 RsyncServer 這兩個服務。</p>
<p>註:啟動服務的方式是在 我的電腦 上按一下滑鼠右鍵,點選管理,會出現電腦管理的視窗,然後點 電腦管理(本機) -&gt; 服務及應用程式
-&gt; 服務,在右邊畫面上就可以看到一堆服務,找到 Openssh SSHD 和 RsyncServer 之後,在上面按滑鼠右鍵,然後點
啟動 即可。<br>
<img src="http://www.ntu.beautifulworldco.com/download/public/for_rsync/my_computer_manage.jpg"><br>
<img src="http://www.ntu.beautifulworldco.com/download/public/for_rsync/start_service.jpg"></p>
<p>接下來是把 C:\Program Files\cwRsyncServer\var\SvcwRsync\.ssh\cwrsync 利用
ftp 或其他方式傳到 unix 的機器上,比如說放到 /.ssh 這個目錄下,於是我們在 unix 的機器下就有 /.ssh/cwrsync
這個檔案了。</p>
<p>再下來有點麻煩,因為有好幾個步驟要做,所以 cwRsync 的網站上介紹了一個 <a href="http://www.itefix.no/phpws/index.php?module=faq&amp;FAQ_op=view&amp;FAQ_id=26">shell script</a> 。我把那個 shell script 稍微改寫一下,改成 <a href="http://www.ntu.beautifulworldco.com/download/public/dl.php?filename=for_rsync/backup_from_windows.sh" target="_blank">backup_from_windows.sh</a> 和 <a href="http://www.ntu.beautifulworldco.com/download/public/dl.php?filename=for_rsync/restore_to_windows.sh" target="_blank">restore_to_windows.sh</a>,</p>
<p>backup_from_windows.sh 的用途是 windows -&gt; unix,用法是<br>
backup_from_windows.sh &lt;windows_ip&gt; &lt;windows_module&gt; &lt;unix_directory&gt;</p>
<p>restore_to_windows.sh 的用途是 unix -&gt; windows,用法是<br>
restore_to_windows.sh &lt;windows_ip&gt; &lt;unix_directory&gt; &lt;windows_module&gt;</p>
<p>不過我用的系統是 Solaris,裡面所需要用到的 ps 是 /usr/ucb/ps,其他的 unix 系統要用的應該是
/bin/ps,這個請自行修改;同時,那個 cwrsync 如果不是放在 /.ssh 之下或是檔名有改,也請自行修改這兩個 shell
scripts。</p>
<p>另外要特別提一點,在 windows 的 rsyncd.conf 裡的一個標準的 module 寫法是像這樣</p>
<p>[test1]<br>
path = /cygdrive/d/16<br>
read only = false<br>
transfer logging = yes</p>
<p>這個 module 的名稱是 test1 ,所定義的目錄是 D:\16,read only 是 false,所以除了備份之外也可以回存。所以想要在 unix 上把 windows 上的 D:\16 備份到 /work/16,就會下像這樣的指令,</p>
<p>backup_from_windows.sh 10.0.0.50 test1 /work/16</p>
<p>這樣 D:\16 下的所有目錄和檔案就會全部備份到 /work/16 去了。</p>
<p>但是,如果要把 /work/16 回存到 D:\16 的話,請記得要用 /work/16/ 而不是 /work/16,也就是說指令要這樣下,</p>
<p>restore_to_windows.sh 10.0.0.50 /work/16/ test1</p>
<p>如果不用 /work/16/ 而用 /work/16 的話,在 windows 裡的 D:\16 裡就會多一個目錄 D:\16\16,這就不是我們所期待的結果了。</p>
<p>3. windows -&gt; windows</p>
<p>我不需要 windows -&gt; windows,所以沒做過這樣的設定,有需要的人可以自己參考網站上的 <a href="http://www.itefix.no/phpws/index.php?module=faq&amp;FAQ_op=view&amp;FAQ_id=55">這篇文件</a>。</p>
                        </div>
       
               


       
<!-- You can start editing here. -->

        <a name="comments"></a><h2>3 Responses</h2>

        <ol class="commentlist"><li class="graybox">
                        <a name="comment-2187"></a><cite><a href="http://gus.illusion.com.hk/blog/?p=197" rel="external nofollow">Gus blog online » 放棄 Samba, 改用 cwRsync</a></cite> Says:<br>
                        <!--<small class="commentmetadata"><a href="#comment-2187" title="Tuesday, October 30th, 2007 at 00:36"></a> after publication. </small>-->
                        <small class="commentmetadata"><a href="http://www.ntu.beautifulworldco.com/weblog/?p=385#comment-2187" title="">October 30th, 2007 at 00:36</a> </small>
                       
                        <p>[...] 介紹一下 rsync 這個同步備份程式 [...]</p>
                       
                </li><li class="">
                        <a name="comment-2601"></a><cite><a href="http://lakers.eyio.net/mars/?p=857" rel="external nofollow">Lakers 火星特區 » Blog Archive » rsync: 備份DreamHost到Mac</a></cite> Says:<br>
                        <!--<small class="commentmetadata"><a href="#comment-2601" title="Friday, March 21st, 2008 at 23:08"></a> after publication. </small>-->
                        <small class="commentmetadata"><a href="http://www.ntu.beautifulworldco.com/weblog/?p=385#comment-2601" title="">March 21st, 2008 at 23:08</a> </small>
                       
                        <p>[...] 柚可椰小站 » Blog Archive » 介紹一下 rsync 這個同步備份程式 [...]</p>
                       
                </li><li class="graybox">
                        <a name="comment-2602"></a><cite><a href="http://lakers.eyio.net/mars/?p=763" rel="external nofollow">Lakers 火星特區 » Blog Archive » [相關連結]RsyncX的備份策略</a></cite> Says:<br>
                        <!--<small class="commentmetadata"><a href="#comment-2602" title="Saturday, March 22nd, 2008 at 08:41"></a> after publication. </small>-->
                        <small class="commentmetadata"><a href="http://www.ntu.beautifulworldco.com/weblog/?p=385#comment-2602" title="">March 22nd, 2008 at 08:41</a> </small>
                       
                        <p>[...] 柚可椰小站 » Blog Archive » 介紹一下 rsync 這個同步備份程式 [...]</p>
                       
                </li></ol>



<a name="respond"></a><h3>Leave a Comment</h3><br>
頁: [1]
查看完整版本: [轉貼]介紹一下 rsync 這個同步備份程式