前不久为公司架设了基于Samba3.0的文件服务器,一但成了服务器,那么就需要有重要的备份了。对于如何备份Samba文件服务器有关的文章很少,查了资料,决定还是用Rsync来备份Samba服务器的好!不会因为还原的时候因为属性和权限的问题而头痛等等。然后再用其他工具备份到磁带上,呵呵!比如:tar。
一、简介:
rsync 本来是用以取代 rcp 的一个工具, 由Samba的开发者Andrew Tridgell开发。它目前是由 rsync.samba.org 维护.
rsync 使用所谓的 "rsync 算法", 提供一个非常快速的档案传输方法, 使 local 和远程二部主机之间的档案达到同步, 它主要是传送二个档案的异动部份, 而非每次都整份传送, 因此速度相当地快,可自动执行增强版的更新。
由于 rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式, 因此许多人拿 rsync 当做一个优异的备份工具来使用(拿来 update ISO 檔也很好用)。rsync有6种不同的用法,如local拷贝备份, local 档案藉由 rsh/ssh 传送至远方主机.... 在此我们主要介绍 rsync 的 daemon 模式.
做备份要有两台机器,一台是备份服务器(Rsync Server);一台为要备份的机器(Rsync Client),比如我的Samba文件服务器。如果一台主机跑 rsync daemon 模式, 我们就称这台机器为一 rsync Server, 或者说这台主机是一台备份主机( Backup Server).Rsync Server使用873的服务通道(port)来进行基于CS的连接的.连接时, rsync Server 会检查密码是否相符, 若通过密码查核, 则开始进行档案传输.第一次连通完成时, 会把整份档案传输一次, 下一次就只传送二个档案之间异动的部份
完成了备份之后,我们就可以把备份档案tar到磁带机上了:)。
二、安装Rsync到系统中:
大家可以到http://rsync.samba.org上下载最新版本的rsync的2.6.2。然后解包安装:
#tar rsync-2.6.2.tar.gz
#cd rsync-2.6.2
#make && make install
如果怕麻烦,就请下载rsync的rpm包,然后用rpm –ivh rsync-*.rpm安装即可搞定。若使用的是RedHat 、Mandrake 等 Linux 套件的系统,那么就不用安装rsync了,系统默认已经安装好了rsync,可以使用:rpm –q rsync查看有没有安装rsync包,下一步就可以准备配置rsync了。
三、设置Rsync Server端
Rsync server需要设定四个方面:
1.规划建立备份目录区
2.设定: /etc/xinetd.d/rsync
3.设定: /etc/rsyncd.conf
4.设定: 密码文件。
说明如下:
1.规划建立备份目录区:
建议你在rsync server上开一个较大的磁盘分割区,并在其下建立好备份用的目录。比如:/home/asialinux。
2.设定: /etc/xinetd.d/rsync:
即#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
}
把其中的disable = yes 改为 disable = no之后退出保存就可以了,这还没有完成,还需启动rsync的服务。
#service xinetd restart
或者
#ntsysv
选中[*]rsync确定即可。
这样就开通了873通道(port),一旦有rsync client连接,xinetd就会把它转介给rsyncd跑port873。
3.设定: /etc/rsyncd.conf
如果在/etc下没有这个文件,请不要迷惑,自己创建一个不就得了,假设要备份的机器名为asialinux(IP:192.168.0.1),即Samba文件服务器:
#vi /etc/rsyncd.conf
[backup]
path = /home/server/asialinux
auth users = feixue
uid = root
gid = root
secrets file = /home/rsyncd.secrets
read only = no
退出vi编辑模式并保存。
说明:
[backup]代表欲备份的主机代号,可以和主机名相同,也可以自定。本例为backup,而没有用asialinux以便大家在下面使用rsync命令时加以理解。
Path就是用来存放备份档案的绝对目录,请你一定要用mkdir开设好,名称自定,如本例要在/home目录下面建立server目录以及server下面的子目录asialinux。
注:如果你没有建立目录、目录建立的不对或者路径不对,都将不能进行rsync的备份,情况如下所示:
#rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup
@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(165)
auth users代表授权的账号,名称可自定。
secrets file代表存储账号和密码的档案路径。
当然,大家可以在/etc/rsyncd.conf内加入更多的区块,来备份多台主机或者一台主机的多个目录等,可以灵活运用。
4.设定:密码文件
如果没有和ssh在一块儿运用的话,rsyncd.secrets的内容很简单,格式为 账号:密码
例如:
feixue:asialinux
注:上述设定只是一个范例,请大家务必自定一组,千万不可以直接套用。
账号和密码设定完成之后,为了安全,还要对其属主和权限进行限定,我测试过,server和client端的权限都设为000时,只要密码两者相符,依然可以正常的备份。:D
#chown root.root rsyncd.secrets
#chmod 600 rsyncd.secrets
这样,我们的Rsync Server端就设定完成了,当然你可以查看rsync的记录日志档案,请参考:/var/log/rsyncd.log。
下面的Rsync Client段的设定就简单多了。
四、设置Rsync Client端
假设欲备份的机器名称为testsmb(IP:192.168.2.220)下的目录/home备份到Rsync Server(asialinux)上。可以做如下设定:
1.设定密码文件
2.测试rsync执行指令
3.将rsync指令放入工作排程(crontab)
说明如下:
1.设定密码文件
假设把密码文件放在/root/rsyncd.secrets,内容很简单,只要含有一行密码即可:
#vi /root/rsyncd.secrets
asialinux
退出vi编辑模式并保存。
注:为了安全,设定密码档案的属性为:600。rsyncd.secrets的密码一定要和Rsync Server密码设定档案里的密码一样。如果不同,将会出现如下的错误:
#rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup
@ERROR: auth failed on module backup
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(165)
2. 测试rsync执行指令
一切设定完之后,我们可以带着兴奋的心情来测试、体验一下Rsync的魅力吧:)
#rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup
如果出现如下所示的画面,那么恭喜一下,成功了:
#rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup
building file list ... done
.profiles/Application Data/Microsoft/Office/WEBFDR16.INF
.profiles/Application Data/Microsoft/WELCOME/DEFAULT.WBM
若出现如下:
#rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup
rsync: getaddrinto: testsmb 873: Name or service not know
rsync error: error in socket IO (code 10 ) at clientserver.c(83)
请分别编辑Rsync Server(假设hostname为asialinux,IP:192.168.0.1)和Rsync Client(假设hostname为testsmb,IP:192.168.0.2)的/etc/hosts文件,分别加入对方的IP地址和机器名,如下:
[root@asialinux root]#vi /etc/hosts
192.168.0.2 testsmb
退出vi编辑模式并保存。
[root@testsmb root]#vi /etc/hosts
192.168.0.1 asialinux
退出vi编辑模式并保存。
如果没有出现期望的画面,那么请检查一下你的设定。
3.将rsync指令放入工作排程(crontab)
现在可以把我们的备份工作置入排程了,假设每天凌晨1点开始备份工作:
#crontab –u root –e
0 1 * * * /usr/bin/rsync --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup
如果你有其他的目录需要备份,则如法炮制吧!
至于安全性方面大家可以自行解决吧!呵呵!
********注意所有服务器时间同步
让linux自动同步时间(shunz)
让linux自动同步时间(shunz)
vi /etc/crontab
加上一句:
00 0 1 * * root rdate -s time.nist.gov
time.nist.gov 是一个时间服务器.
阅读(6634) | 评论(1) | 转发(0) |