rsync server 搭建

rsync 搭建:
part 1:基本環境
OS:  ubutnu 10.10
server: 172.16.2.84
client: 172.16.2.142

part 2: server 端相關操作
1 install: 
ubuntu 從 10.04 開始就默認安裝 rsync。 rsync 服務時默認不啓動的,如果想要開啓啓動,可以修改:
$sudo vim  /etc/default/rsync
RSYNC_ENABLE=true   #false改true


2 修改配置文件:

# 對於大多數默認安裝的,默認開啓不啓動的文件都會保存在 /usr/share 中。 如果讓其開啓啓動,可以拷貝到 /etc  目錄下
$sudo cp /usr/share/doc/rsync/examples/rsyncd.conf   /etc

我們先來查看一下這個文件(知道爲什一定要使用cat 嗎? cat 是以只讀文件形式打開)
$sudo cat /etc/rsyncd.conf

# 文件顯示如下:

# sample rsyncd.conf configuration file

# GLOBAL OPTIONS

#motd file=/etc/motd    # 顯示登錄之後的歡迎信息,如果願意,可以自己修改 /etc/motd 目錄下的東西
#log file=/var/log/rsyncd   #指定日誌文件的存放路徑。此時日誌就默認保存在rsyncd 文件中
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
# pid file=/var/run/rsyncd.pid


# 指定rsync發送日誌消息給syslog時的消息級別,常見的消息級別是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, # uucp, local0, local1, local2, local3,local4, local5, local6和local7。默認值是daemon。 (應該明白,系統有一個自己的日誌系統, syslog)
#syslog facility=daemon


# 自定義tcp選項,默認是關閉的
#socket options=


# 以下是模塊信息, 我們可以創建多個模塊
# MODULE OPTIONS
[ftp]
    comment = public archive     # 模塊描述
    path = /var/www/pub      # 在rsync 服務器上,指定需要同步的路徑
    use chroot = yes    #默認是yes|true,如果爲true,那麼在rsync在傳輸文件以前首先chroot到path參數指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要root權限,並且不能備份指向外部的符號連接指向的目錄文件。
#   max connections=10   # 最大的連接數
    lock file = /var/lock/rsyncd   # 指定支持 max connections 參數時的鎖文件
# the default for read only is yes...
    read only = yes   # 只讀選項
    list = yes   #客戶請求時可用模塊時是否列出該模塊
    uid = nobody  #設定該模塊傳輸文件時守護進程應該具有的uid 
    gid = nogroup     #設定該模塊傳輸文件時守護進程應具有的gid,此項與uid配合可以確定文件的訪問權限
#   exclude =     #用來指定多個由空格隔開的多個模式列表,並將其添加到exclude列表中。這等同於在客戶端命令中使用--exclude來指定模式,不過配置文件中指定的exlude模式不會傳遞給客戶端,而僅僅應用於服務器。一個模塊只能指定一個exlude選項,但是可以在模式前面使用"-"和"+"來指定是exclude還是include    #這個我的理解是排除目錄中不需同步的文件,是的
#   exclude from =   #可以指定一個包含exclude模式定義的文件名,(不是太理解)
#   include =    #與exclude相似
#   include from =      #可以指定一個包含include模式定義的文件名
#   auth users =    #該選項指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊。這裏的用戶和系統用戶沒有任何關係。如果"auth users"被設置,那麼客戶端發出對該模塊的連接請求以後會被rsync請求challenged進行驗證身份這裏使用的 challenge/response認證協議。用戶的名和密碼以明文方式存放在"secrets file"選項指定的文件中。默認情況下無需密碼就可以連接模塊(也就是匿名方式)  默認情況下是不需要用戶名和密碼的
#   secrets file = /etc/rsyncd.secrets  #該文件每行包含一個username:password對,以明文方式存儲,只有在auth users被定義時,此選項才生效。同時我們需要將此文件權限設置爲0600
    strict modes = yes   #該選項指定是否監測密碼文件的權限,如果該選項值爲true那麼密碼文件只能被rsync服務器運行身份的用戶訪問,其他任何用戶不可以訪問該文件。默認值爲yes
#   hosts allow =    #允許的主機. 如果不寫, 表示任何主機都可以訪問
#   hosts deny =    #拒絕訪問的主機. 
    ignore errors = no      #設定rsync服務器在運行delete操作時是否忽略I/O錯誤 
    ignore nonreadable = yes   #設定rysnc服務器忽略那些沒有訪問文件權限的用戶
    transfer logging = no  #使rsync服務器使用ftp格式的文件來記錄下載和上載操作在自己單獨的日誌中
#   log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.      #設定日誌格式
    timeout = 600   # 設置超時時間
    refuse options = checksum dry-run  #定義一些不允許客戶對該模塊使用的命令選項列表, 即這個命令不可用
    dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz   #告訴rysnc哪些文件在傳輸前不用壓縮,默認已設定壓縮包不再進行壓縮

日誌格式選項列表:
%h:遠程主機名
%a:遠程IP地址
%l:文件長度字符數
%p:該次rsync會話的進程id
%o:操作類型:"send"或"recv"、”del.”
%f:文件名
%P:模塊路徑
%m:模塊名
%t:當前時間
%u:認證的用戶名(匿名時是null)
%b:實際傳輸的字節數
%c:當發送文件時,該字段記錄該文件的校驗碼

下面我們自己來定義自己的conf 文件: (一般來說,系統默認給出的配置文件都比較全,在具體的項目實踐中,一般是越簡單越好,把一些不需要的的東西去掉)

log file=/var/log/rsyncd

pid file=/var/run/rsyncd.pid

syslog facility=daemon


[rsync_bk]
  comment = public archive
  path = /home/rsync_bk
  use chroot = no
  lock file = /var/lock/rsyncd
  read only = yes
  list = yes
  uid = nobody
  gid = nogroup
  auth users = rsync
  secrets file = /etc/rsyncd.secrets
  strict modes = yes
  hosts allow = 172.16.2.142
  ignore errors = yes
  ignore nonreadable = yes
  transfer logging = yes
  log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
  timeout = 600
  refuse options = checksum dry-run
  dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

創建一個密碼文件,並寫入username:password:
$sudo vi /etc/rsyncd.secrets
rsync:123

修改權限: 600 分別表示user, group, others 的rwz權限, 首位的 0 好像是特權位, 
$sudo chmod 0600 /etc/rsyncd.secrets    

啓動rsync
sudo /etc/init.d/rsync start


# client 同步之後一個, 從 /var/log/rsyncd 截取的一個日誌片斷:

2011/08/31 11:38:52 [11083] sent 200 bytes  received 82 bytes  total size 25
2011/08/31 11:39:27 [11556] name lookup failed for 172.16.2.142: Name or service not known
2011/08/31 11:39:27 [11556] connect from UNKNOWN (172.16.2.142)
2011/08/31 11:39:31 [11556] auth failed on module rsync_bk from unknown (172.16.2.142): password mismatch
2011/08/31 11:39:47 [11799] name lookup failed for 172.16.2.142: Name or service not known
2011/08/31 11:39:47 [11799] connect from UNKNOWN (172.16.2.142)
2011/08/31 11:39:50 [11799] rsync on rsync_bk/ from rsync@unknown (172.16.2.142)
2011/08/31 11:39:50 [11799] building file list

part 3: clinet 端相關操作:
一般客戶端不需要進行特殊的配置,直接同步即可
在服務器上建立 a.py, b,py c.py ,  在client 端執行  "rsync -vzrtopg --progress [email protected]::rsync_bk   . "就可以同步到 當前目錄,當然也可以建立一個目錄, rsync

jia@jia:~$ rsync -vzrtopg --progress [email protected]::rsync_bk   rsync
Password:
receiving incremental file list
./
a.py
          25 100%   24.41kB/s    0:00:00 (xfer#1, to-check=2/4)
b.py
           6 100%    5.86kB/s    0:00:00 (xfer#2, to-check=1/4)
c.py
           4 100%    0.11kB/s    0:00:00 (xfer#3, to-check=0/4)
sent 119 bytes  received 312 bytes  172.40 bytes/sec
total size is 35  speedup is 0.08

我們把這個同步工作交給crontab去執行。首先我們要創建一個密碼文件
$sudo vi /etc/rsync.pwd輸入123,保存     #這裏指定使用的密碼文件中只需要有密碼,不要有用戶名。並且密碼要一致,

!注意:下面這兩步操作是必須的,沒有足夠權限同步就會不成功,ls -l 你所指向的目錄 可以查看.pwd 文件的屬性和屬主
sudo chmod 0600 /etc/rsync.pwd
sudo chown 普通用戶:普通用戶組 /etc/rsync.pwd

然後我們打開crontab,使它自動同步

$crontab -e
* * * * * rsync -a --password-file=/etc/rsync.pwd [email protected]::rsync_bk   /databk   

首次執行crontab 的一個界面: (首行的5個* 是固定時間格式)
jia@jia:~/rsync$ crontab  -e
no crontab for jia - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny

Choose 1-4 [2]:

crontab隨機啓動 , 即電腦一啓動就開啓crontab;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章