- 论坛徽章:
- 0
|
一. 简介
rsync 本来是用以取代 rcp 的一个工具, 它目前是由
rsync.samba.org
维护.
rsync 使用所谓的 "rsync 演算法", 提供一个非常快速的档案传输方法, 使 local 和远端二部主机之间的档案达到同步, 它主要是传送二个档案的异动部份, 而非每次都整份传送, 因此速度相当地快.
由于 rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式, 因此许多人拿 rsync 当做一个优异的备份工具来使用. (拿来 update ISO 档也很好用)
本文将简单介绍运用 rsync 备份网路主机档案的基本方法, 供各位伙伴参考.
rsync 有 6 种不同的用法, 如 local 拷贝备份, local 档案藉由 rsh/ssh 传送至远方主机.... 在此我们主要介绍 rsync 的 daemon 模式.
首先, 先给个简单的定义: 如果一台主机跑 rsync daemon 模式, 我们就称这台机器为一 rsync Server, 或者说这台主机是一台备份主机( Backup Server).
备份主机会开启一个 873 的服务通道(port), 等待对方 rsync 连接.
连接时, rsync Server 会检查密码是否相符, 若通过密码查核, 则开始进行档案传输.
第一次连通完成时, 会把整份档案传输一次, 下一次就只传送二个档案之间异动的部份.
rsync client (欲加以备份的网路主机) 和 rsync server 的运作方式, 如下图所示:
![]()
藉由上述方法, 我们可以设立多部备份主机, 使网路主机上重要的档案能分散至数部主机中, 以分散风险.
一旦完成备份, 我们可以对这些备份主机再做进一步的储存动作, 如使用
tar
或
Ghost
, 把档案备份到更稳固,更能长久保存的设备上, 如 MO 或 烧录设备.
以上, 便是整个运作的想法, 底下, 我们来加以实作.
二. 安装法
rsync 目前最新版是 2.5.5, 可以到
rsync.samba.org
或
敝中心 FTP 下载
.
安装 rsync 十分简单, 以下这道指令即可搞定:
./configure && make && make install
若您使用 rpm 套件, 只要下 rpm -ivh rsync*.rpm 即可
它的设定档位置在 /etc/rsyncd.conf
其实 RedHat / Mandrake 等 Linux 套件, 预设值都已帮各位安装好 rsync 了.
三. 设定 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)
步骤:
5 设定密码档
6 测试 rsync 执行指令
7 将 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 的用法, 可参考小弟写的这份讲义:
Linux防火墙入门
另, rsync 可以结合 ssh 或 ssh2, 使安全性更加提高. 详情请自行查阅 rsync / ssh / ssh2 的 manpage.
六. 参考文件:
rsync 的一些备份妙法, 请参考:
http://rsync.samba.org/examples.html
rsync 的教学文件:
A Tutorial on Using rsync
rsync 的 FAQ
七. 可能会遇到的疑难问题:
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 开设好备份目录.
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/42994/showart_1218210.html |
|