Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7656421
  • 博文数量: 1770
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16357
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1770)

文章存档

2024年(15)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2009-04-15 22:03:25

网上很多资料都不全,鉴于此,我归纳整理了一下,部分内容出自  里面写得很好,可参考一下
 
一、简介

rsyncLinuxUNIX系统下的数据镜像备份工具,从软件的命名上就可以看出来了-remote sync。它的特性如下:

1)可以镜像保存整个目录树和文件系统。
2)可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3)无须特殊权限即可安装。
4)优化的流程,文件传输效率高。
5)可以使用rcpssh等方式来传输文件,当然也可以通过直接的socket连接。
6)支持匿名传输。

 

二、安装(略)

. 設定 rsync server: (假設這台主機名稱為 bk.xxx.edu.tw)

rsync server 端要設定以下四項:

  1. 規劃建立備份目錄區
  2. 設定: /etc/xinetd.d/rsync
  3. 設定: /etc/rsyncd.conf
  4. 設定: 密碼檔

依次說明如下:

1. 規劃建立備份目錄區:

建議您準備一個容量較大且獨立的分割區, 並在其中開好備份目錄, 如此 /bk/server

2. 設定 /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, 使上述設定生效.

上述, 主要是要打開 rsync 這個 daemon, 一旦有 rsync client 要連接時, xinetd 會把它轉介給 rsyncd ( port 873).

3. 設定 /etc/rsyncd.conf :

以下區塊, 代表開放給某一台 rsync client 主機的設定, 簡單範本如下:

    [mch1]

    path = /bk/server/mch1_backup

    auth users = mch1_backup

    uid = root

    gid = root

    secrets file = /etc/rsyncd.secrets

    read only = no

比較重要的解釋:

[mch1] 代表欲備份的主機代號, 名稱可自訂.

path 用來設定備份檔案要存放在那一個目錄? 請先用 mkdir 開設好, 名稱可自訂.

auth users 代表授權的帳號, 名稱可自訂.

secrets file 代表儲存帳號密碼的密碼檔, 其放置的路徑檔名.

當然, 這台備份主機, 可以容納許多 rsync client 連接, 只要在 rsyncd.conf 中設妥對應的區塊即可.

換言之, 以下範本, 代表二個主機 mch1 mch2 欲備份進來:

    [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

4. 設定密碼檔:

rsyncd.secrets 的內容很簡單, 格式為 帳號:密碼

如以下例子:

mch1_backup:ILoveOLS3

注意! 上述設定只是一個範例, 請務必自訂一組, 千萬不要直接套用.

接下來, 要將 rsyncd.secrets 這個密碼檔的檔案屬性設為 root 擁有, 且權限要設為 600, 否則無法備份成功!

因此, 請下:

  • chown root.root rsyncd.secrets
  • chmod 600 rsyncd.secrets

至此, rsync server 這端已設定完成, 若欲查看備份記錄, 可參考 /var/log/rsyncd.log 這個檔案.

接下來是 client (即欲備份的網路主機) 的設定.

 

. 設定 rsync client (假設這台主機 IP : 11.22.33.44)

步驟:

  1. 設定密碼檔
  2. 測試 rsync 執行指令
  3. rsync 指令放入工作排程 (crontab)

另外, 假設 mch1 這台主機是網路主機, 今打算把 /usr/local/apache 這個目錄加以備份至 backup server (bk.xxx.edu.tw),

但不想備份記錄檔(也就是說要把 logs 目錄排除), 整個操作方式如下:

1. 假設把密碼檔放在 /root/rsyncd.secrets, 內容只要含有密碼一行即可:

ILoveOLS3

注意: rsyncd.secrets 的權限屬性必須設為 600

2. 測試指令是否可以成功?

/usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /usr/local/apache --exclude apache /logs mch1_backup@bk.xxx.edu.tw::mch1

若出現傳輸目錄檔案的畫面, 即表示測試成功.

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

crontab -u root -e

0 5 * * * /usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /usr/local/apache --exclude apache /logs mch1_bakup@bk.xxx.edu.tw::mch1

若您有其它目錄( /home)要備份, 則如法泡製:

20 5 * * * /usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /home mch1_bakup@bk.xxx.edu.tw::mch1

若您覺得備份一台 Backup Server 不夠, 可再按上述方法, 自行增加任意多台 Backup Server, 以分散風險!

像這樣把備份的工作全部自動化, 真是輕鬆愉快, 大大地減低備份工作煩人的壓力!!

. 安全性:

建議使用 ipchains iptables 指令, 來限制 rsync client 的連線範圍, 例子如下:

ipchains -A input -p tcp -s ! 11.22.33.44 --dport 873 -j DENY

iptables -A INPUT -p tcp -s ! 11.22.33.44 --dport 873 -j DROP

如此, 只有 11.22.33.44 這個 client IP 能連入這台 rsync server.

ipchains iptables 的用法, 可參考小弟寫的這份講義:

, rsync 可以結合 ssh ssh2, 使安全性更加提高. 詳情請自行查閱 rsync / ssh / ssh2 manpage.

 

. 可能會遇到的疑難問題:

1. Q: 出現以下這個訊息, 是怎麼一回事?

@ERROR: auth failed on module xxxxx

rsync: connection unexpectedly closed (90 bytes read so far)

rsync error: error in rsync protocol data stream (code 12) at io.c(150)

A: 這是因為密碼設錯了, 無法登入成功, 請再檢查一下 rsyncd.secrets 中的密碼設定, 二端是否一致?

2. Q: 出現以下這個訊息, 是怎麼一回事?

password file must not be other-accessible

continuing without password file

Password:

A: 這表示 rsyncd.secrets 的檔案權限屬性不對, 應設為 600

請下 chmod 600 rsyncd.secrets

3. Q: 出現以下這個訊息, 是怎麼一回事?

@ERROR: chroot failed

rsync: connection unexpectedly closed (75 bytes read so far)

rsync error: error in rsync protocol data stream (code 12) at io.c(150)

A: 這通常是您的 rsyncd.conf
path 路徑所設的那個目錄並不存在所致.
請先用 mkdir 開設好備份目錄.
  

 

以下是我加的:

 

rsync 的另类用法:

 

1.在上述rsync的基础上把rsync server的rsync.conf

  #auth users

  #secrets files

  注释掉,密码文件也不需要了,这样就可以进行匿名备份了

  主要是 uid 跟 gid 要匹配

  客户端用以下命令即可:

  /usr/bin/rsync -rvlHpogDtS  /usr/local/apache --exclude apache /logs bk.xxx.edu.tw::mch1

  #把password file 跟bk.xxx.edu.tw前的用户名都去掉了

 

2.传文件:

    rsync –avz –e ssh source:/dir /local

  若建立ssh信任关系后可不需要输入密码

阅读(1427) | 评论(0) | 转发(0) |
0

上一篇:茗记

下一篇:IIS+php HTTP 错误 401.3

给主人留下些什么吧!~~