使用RSYNC備份網站數據(1)

前天干了件吐血的大事,是這樣的,同事讓我幫他清理下服務器上一些亂七八糟的用戶,我cat下/etc/passwd文件,裏面一堆的用戶亂七八糟的用戶文件,更爲可恥的是有人還把用戶加入sudoers裏面去了(之前接觸過該臺服務器的人),我二話不說,一個個使勁的刪,連同用戶所屬的文件也通通刪了(使用命令usrdel -f -r xxx,以後刪除東西的時候千萬千萬要注意-f參數,最好任何時候都別用),包括一些FTP賬戶,FTP用戶直接使用的是本地用戶,自然FTP是用來管理網站程序的,於是我也把它刪了,悲劇發生了,這些FTP賬戶所屬目錄就是網站程序文件,一刪除用戶資料帶着程序文件全刪除了,後來網站不能訪問了檢查一遍機器其他問題後才發現問題,當時都沒反應過來,之後那個悔,那個慌。還好有備份,不過這兩天的圖片沒了得重新上傳。

於是,在這件事情的基礎上,就決定配置一個實時性比較強的數據備份,自然用rsync。至於rsync是什麼東東,同學們自己Google或者百度去。

Ubuntu Server,Centos,Debian等安裝rsync服務可以直接使用在線安裝包。

?
1
sudo apt-get install rsync

?
1
yum install rsync

安裝好了之後,我們接下來需要配置三個文件,分別是rsyncd.conf、rsyncd.motd、rsyncd.secrets,這三個文件分別是主配置文件、顯示歡迎界面文件以及密碼驗證文件,並且rsyncd.conf默認是不存在的,得自己創建。

?
1
touch rsyncd.conf

接下來,在該配置文件裏寫入如下配置代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Distributed under the terms of the GNU General Public License v2
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help
# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid
port = 873
address = 192.168.1.1
 
#uid = nobody
#gid = nobody
uid = root
gid = root
use chroot = yes
read only = yes
 
#limit access to private LANs
hosts allow=192.168.1.2/255.255.255.0
hosts deny=*
max connections = 5
motd file = /etc/rsyncd.motd
 
#This will give you a separate log file
log file = /var/log/rsync.log
 
#This will log every file transferred - up to 85,000+ per user, per sync
#transfer logging = yes
log format = %t %a %m %f %b
 
syslog facility = local3
timeout = 300
 
[larro]
path = /var/www/larro
list=yes
ignore errors
auth users = root
secrets file = /etc/rsyncd.secrets
comment = This is the System file of Larro's Blog
exclude = easylife/ samba/

大概解釋下上面的配置代碼:
address =192.168.1.1 rsync服務器的IP地址
uid = root 使用root用戶
gid = root 使用root用戶組

注意:服務器端傳輸文件時,需要配置使用哪個用戶和用戶組來執行,默認是nobody。 如果用nobody用戶和用戶組,可能遇到權限問題,有些文件從服務器上拉不下來。偷懶爲了方便,用了root ,或者也可以在定義要同步的目錄時定義的模塊中指定用戶來解決權限的問題。

hosts allow=122.224.164.218/255.255.255.0
hosts deny=*
上面兩行是指定那些客戶端IP可以連接到該rsync服務器,這個配置能很大程度上提高安全性,host allow 是允許的IP列,格式爲IP/網段,多個空格隔開

log file=/etc/log/rsync.log rsync的日誌記錄文件
以及,上面的rsyncd.conf配置文件是分爲兩部分,包括第一部分公共配置參數(上面解釋部分)以及單個模塊的配置,如上:

?
1
2
3
4
5
6
7
8
[larro]
path = /var/www/larro
list=yes
ignore errors
auth users = root
secrets file = /etc/rsyncd.secrets
comment = This is the System file of Larro's Blog
exclude = unrsync/

這裏,是指配置了一個名爲larro的同步備份項目模塊:
path = /var/www/larro 是要備份的文件的位置

list = yes 參數是表示是否允許列出文件結構,一般不要配置成yes,因爲這樣別人就能知道文件結構了,多少是個不太安全的因素。
auth users = root 驗證時候使用的用戶
secrets file = /etc/rsyncd.secrets 驗證時候使用的密碼驗證文件,就是上面提到的三個配置文件之一
comment = This is the system file of Larro’s Blog 這個是當你列出該項目模塊時候的一個說明文字,可以任意配置
exclude = unrsync/ 配置項目模塊裏你不想同步備份的文件及文件夾,多個空格隔開
至此,rsyncd.conf配置文件弄好了,具體的其他詳細配置項目在官方配置文檔裏查看,大家可仔細參考,接下來來配置rsyncd.motd,rsyncd.secrets.

rsyncd.motd也是可以任意配置,因爲它僅僅是一個顯示歡迎的話語,不過可以寫得工整點,比如:

?
1
2
3
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Welcome to use the rsync +
+++++++++++++++++++++++++++++++++++++++++++++++++++++

然後配置rsyncd.secrets,前面rsyncd.conf裏面使用的驗證用戶名是root,那麼這裏面配置的就是root的驗證密碼.

?
1
2
3
echo "mypasswod" > /etc/rsyncd.secrets
chown root /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets

聽上去有點恐怖,太不安全了吧呵呵,這個配置文件權限必須是設置成600,不然無法使用rsync服務,到時候會提示以下錯誤信息:

?
1
2
3
password file must not be other-accessible
continuing without password file
Password:

這樣子就沒關係了,因爲權限設置爲600,也就是隻有root用戶本身才能讀寫,也就是說其他用戶登錄系統後,並不能查看到root的賬戶信息,不過前提是你是這樣設置的並且rsync服務被你配置成功了,呵呵。
到這裏,一個rsync服務器上面的簡單配置就好了。
啓動服務:

?
1
rsync --daemon --config=/etc/rsyncd.conf

上面命令是通過–daemon參數在後臺啓動rsync服務,並且通過使用/etc/rsyncd.conf配置文件來啓動rsync服務,如果配置文件爲默認的/etc/rsyncd.conf則可以不使用–config參數來指定配置文件位置。

然後你得弄另外一個機器192.168.1.2來備份上面機器項目文件。
一樣,先安裝rsync。
然後,使用下面命令測試下:

?
1
rsyncd --list-only [email protected]::larro

之後會提示輸入密碼,成功後會列出larro模塊下所有的文件,或者通過在客戶機上配置存放一個密碼文件來訪問,省得每次都提示輸入密碼,創建某個rsync賬戶的密碼文件,比如上面用的root密碼。

?
1
2
3
mkdir /etc/rsync
touch /etc/rsync/rsync.larro.passwd
echo "mypassword" > /etc/rsyc/rsync.larro.passwd

然後你就可以直接這樣使用命令:

?
1
2
rsync --list-only --passwd-file=/etc/rsync/rsync.larro.passwd root@19\
2.168.1.1::larro

rsync有六種不同的工作模式:

  1. rsync [OPTION]… SRC [SRC]… [USER@]HOST:DEST
  2. rsync [OPTION]… [USER@]HOST:SRC DEST
  3. rsync [OPTION]… SRC [SRC]… DEST
  4. rsync [OPTION]… [USER@]HOST::SRC [DEST]
  5. rsync [OPTION]… SRC [SRC]… [USER@]HOST::DEST
  6. rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]

解釋:

  1. 拷貝本地文件;當SRC和DES路徑信息都不包含有單個冒號”:”分隔符時就啓動這種工作模式。
  2. 使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號”:”分隔符時啓動該模式。
  3. 使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號”:”分隔符時啓動該模式。
  4. 從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含”::”分隔符時啓動該模式。
  5. 從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含”::”分隔符時啓動該模式。
  6. 列遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。

rsync中的參數

-a  以archive模式操作、複製目錄、符號連接 相當於-rlptgoD

-r  是遞歸

-l  是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有權限;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當於塊設備文件;

-z  傳輸時壓縮;

-P  傳輸進度;

-v  傳輸時的進度等信息,和-P有點關係,自己試試。可以看文檔;

-e  ssh的參數建立起加密的連接。

-u  只進行更新,防止本地新文件被重寫,注意兩者機器的時鐘的同時

--progress  是指顯示出詳細的進度情況

--delete  是指如果服務器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致

--password-file=/password/path/file  來指定密碼文件,這樣就可以在腳本中使用而無需交互式地輸入驗證密碼了,這裏需要注意的是這份密碼文件權限屬性要設得只有屬主可讀。

在這篇文章裏就先講講rsync的基本配置,在下一篇寫寫怎麼通過rsync、crontab、shell來完成備份同步服務器上數據文件。

原文地址:使用RSYNC備份網站數據(1)

// -_-  Larro

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章