iT邦幫忙

3

RSYNC 的設定與使用整理

使用"rsync 演算法", 提供一個非常快速的檔案傳輸方法, 使 local 和遠端二部主機之間的檔案達到"同步",它主要是傳送二個檔案的異動部份, 而非每次都整份傳送, 因此速度相當地快。兩端的檔案會保持相同,若需要壓縮備份,可以於同步完成後使用 tar+gzip 的功能。

RSYNC說明---同步軟體

用途 :使用"rsync 演算法", 提供一個非常快速的檔案傳輸方法, 使 local 和遠端二部主機之間的檔案達到"同步",它主要是傳送二個檔案的異動部份, 而非每次都整份傳送, 因此速度相當地快。兩端的檔案會保持相同,若需要壓縮備份,可以於同步完成後使用 tar+gzip 的功能。

維護 :rsync.samba.org 維護。
服務模式:可以搭配 rsh 或 ssh 與 daemon 模式。
備份模式:
1.單機中的文件複製;當SRC和DES路徑設定都不包含有單個冒號”:”分隔符時就啟動這種工作模式。
2.使用一個遠程shell程序(如rsh、ssh)將本地機器的內容複製到遠端機器。 當DST路徑地址包含單個冒號”:”分隔符時啟動該模式。
3.使用一個遠程shell程序(如rsh、ssh)將遠端機器的內容複製到本地機器。 當SRC地址路徑包含單個冒號”:”分隔符時啟動該模式。
4.從遠端rsync服務器中複製文件到本地端機器。當SRC路徑設定包含”::”分隔符時啟動該模式。
5.從本地機器複製文件到遠端rsync服務器中。當DST路徑設定包含”::”分隔符時啟動該模式。
6.顯示遠端主機的文件列表。這類似於rsync傳輸,只要在命令中省略掉來源端設定即可。

通訊埠 :873

作業程序:
1.讓一台主機跑 rsync daemon 模式, 我們就稱這台機器為 rsync Server。 ===> 設定檔案 /etc/xinetd.d/rsync
2.在server端建立備份的參數檔案,rsync會自動套用。 ===>設定檔案 /etc/rsyncd.conf ,/etc/rsyncd.secrets -> chown root.root rsyncd.secrets , chmod 600 rsyncd.secrets
3.當client端連線時,後透過port 873 連接 rsync server 。 ===>設定檔案 /root/rsyncd.secrets -> chown root.root rsyncd.secrets , chmod 600 rsyncd.secrets
4.檢查密碼。
5.進行兩邊文件核對比較,將差異的部分進行傳遞。

========
安裝方式

下載點 :rsync.samba.org
tar的安裝:./configure && make && make install ---> 執行檔的路徑: /usr/local/bin/rsync
rpm的安裝:rpm -ivh ***.rpm 或 rpm -Uvh ***.rpm ---> 執行檔的路徑: /usr/bin/rsync 用 rpm -qa|grep rsync 可以看到安裝的rpm

==========
伺服器設定 :提供空間作為備用用的主機

1.啟動 daemon

vi /etc/xinetd.d/rsync

如下:

default: off

description: The rsync server is a good addition to am ftp server, as it \

allows crc checksumming etc.

service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

service xinetd restart

2.設定參數檔

vi /etc/rsyncd.conf

如下:
log file = /var/log/rsyncd.log
[mch1]
path = /bk/server/mch1_backup
auth users = mch1_backup
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no

[mch2]
path = /bk/server/mch2_backup
auth users = mch2_backup
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no

說明:
log file :指定紀錄檔位置
[mch1][mch2] :mch1 mch2 各表示一個同步設定,可以允許多組,只要用[]表示區隔
path :指定可以被使用於同步的存放路徑
auth users :指定連線的帳號,跟系統帳號無關,可以自定
uid gid :指定連線帳號要套用的uid gid
secrets file :指定連線帳號所用的密碼檔位置
read only :設定為 no表示允許寫入

3.設定密碼檔

vi /etc/rsyncd.secrets

如下:
mch1_backup:00001
mch2_backup:00002

說明:
格式為 帳號:密碼 --> auth users:password

chown root.root rsyncd.secrets

chmod 600 rsyncd.secrets

==========
連線端設定:資料來源主機,從這一台主機將資料複製到伺服器端

1.設定密碼檔

vi /root/rsyncd.secrets

如下:
00001

說明:
只要輸入於備份指令下達時,對應使用於主機端設定之帳號的密碼,此例假設用 mch1的設定,對應到user為 mch1_backup,所以密碼為00001

chown root.root rsyncd.secrets

chmod 600 rsyncd.secrets

====================================
文件同步,測試設定是否完成

說明:若要使用單機測試,則單機中必須完成 '伺服器設定' 及 '連線端設定'

<<RPM安裝>> ...參數下達不同,但是功能相同,因為 a 代表了 rlptgoD

/usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /usr/local/apache mch1_backup@127.0.0.1::mch1

/usr/bin/rsync -avSH --password-file=/root/rsyncd.secrets /usr/local/apache mch1_backup@127.0.0.1::mch1

<<TAR安裝>>

/usr/local/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /usr/local/apache mch1_backup@127.0.0.1::mch1

/usr/local/bin/rsync -avSH --password-file=/root/rsyncd.secrets /usr/local/apache mch1_backup@127.0.0.1::mch1

說明:
/usr/bin/rsync or /usr/local/bin/rsync :rsync程式所在
-rvlHpogDtS or -avSH :同步參數
--password-file :client端的密碼檔所在
/usr/local/apache :要被同步的目錄,會在同步的目錄下建立一個apache的資料夾
/usr/local/apache/ :要被同步的目錄,不會在同步的目錄下建立一個apache的資料夾,直接同步apache目錄下的文件
mch1_backup :連線伺服器使用的帳號
@127.0.0.1:: :表示要連接到遠端ip為127.0.0.1的伺服器
mch1 :使用mch1這一個同步設定參數

============
同步參數說明

-a:表示使用 rlptgoD 這些參數
-r:包含下階目錄及文件
-l:包含 link 連結
-p:保留文件原來的權限設定
-t:保留文件原來的異動時間
-g:保留文件原來的檔案群組
-o:保留文件原來的擁有者(root only)
-D:保留device資訊(root only) --->不知所謂
-S:嘗試去處理稀疏的檔案,讓這些檔案在目的端佔去較少的磁碟空間
-v:同步時顯示完整且複雜的同步狀況訊息
-H:保留硬式連結 --->不知所謂
-z:壓縮模式,當資料在傳送到目的端的過程中進行檔案壓縮,但是到目的端後,就會還原!
-n:不實際執行傳送,只顯示將會有的傳輸動作
-q:安靜模式,幾乎沒有訊息產生.常用在以cron執行rsync
--bwlimit=KBPS:定義傳輸頻寬的大小(KBytes/秒)
--progress:顯示傳送的進度.(給檔案傳送時,怕無聊的人用的..)
--stats:顯示檔案傳送時的資訊狀態
--port=PORT:定義rsyncd(daemon)要執行的port(預設為tcp 873)
--exclude=PATTER:符合PATTERN(規則表示式)樣式的檔案不進行傳送
也可以排除目錄: --exclude apache /logs 以上面的例子,排除 apache下的 logs 目錄
PATTERN:RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state
.nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej
.del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn
其他參數請參考相關文件

設定每天定時自動執行

置入工作排程, 假設每天凌晨 5 點開始備份:

crontab -u root -e

0 5 * * * /usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /usr/local/apache mch1_bakup@127.0.0.1::mch1


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言