rsync,即remote synchronize,从名字上看就知道它是一款实现远程同步功能的软件。
1、安装:
可以从官网http://rsync.samba.org/下载源码安装
tar xvf rsync-xxx.tar.gz
cd rsync-xxx
./configure --prefix=/usr ;make ;make install
软件包安装
apt-get install rsync 注:在debian、ubuntu 等在线安装方法;
yum install rsync 注:Fedora、Redhat 等在线安装方法;
rpm -ivh rsync 注:Fedora、Redhat 等rpm包安装方法;
需要注意的是必须在服务器A和B上都安装rsync,其中A服务器上是以服务器模式运行rsync,而B上则以客户端方式运行rsync。
这样在web服务器A上运行rsync守护进程, 在 B上定时运行客户程序来备份web服务器A上需要备份的内容。
2、配置:
rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)
服务器配置文件(/etc/rsyncd.conf),该文件默认不存在,请创建它。
具体步骤如下:
#touch /etc/rsyncd.conf #创建rsyncd.conf,这是rsync服务器的配置文件。
#touch /etc/rsyncd.secrets #创建rsyncd.secrets ,这是用户密码文件。
#chmod 600 /etc/rsyncd/rsyncd.secrets #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!
#touch /etc/rsyncd.motd
下一就是我们修改rsyncd.conf和rsyncd.secrets和rsyncd.motd文件的时候了。
设定/etc/rsyncd.conf
rsyncd.conf是rsync服务器主要配置文件。我们先来个简单的示例,后面在详细说明各项作用。
比如我们要备份服务器上的/home和/opt,在/home中我想把easylife和samba目录排除在外;
# 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.171
#uid = nobody
#gid = nobody
uid = root
gid = root
use chroot = yes
read only = yes
#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/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
[rhel4home]
path = /home
list=yes
ignore errors
auth users = root
secrets file = /etc/rsyncd.secrets
comment = This is RHEL 4 data
exclude = easylife/ samba/
[rhel4opt]
path = /opt
list=no
ignore errors
comment = This is RHEL 4 opt
auth users = easylife
secrets file = /etc/rsyncd/rsyncd.secrets
注:关于auth users是必须在服务器上存在的真实的系统用户,如果你想用多个用户以,号隔开,比如auth users = easylife,root
设定密码文件
密码文件格式很简单,rsyncd.secrets的内容格式为:
用户名:密码
我们在例子中rsyncd.secrets的内容如下类似的;在文档中说,有些系统不支持长密码,自己尝试着设置一下吧。
easylife:keer
root:mike
chown root.root rsyncd.secrets #修改属主
chmod 600 rsyncd.secrets #修改权限
注:1、将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功! 出于安全目的,文件的属性必需是只有属主可读。
2、这里的密码值得注意,为了安全你不能把系统用户的密码写在这里。比如你的系统用户easylife密码是000000,为了安全你可以让rsync中的easylife为keer。这和samba的用户认证的密码原理是差不多的。
设定rsyncd.motd 文件;
它是定义rysnc服务器信息的,也就是用户登录信息。比如让用户知道这个服务器是谁提供的等;类似ftp服务器登录时,我们所看到的 linuxsir.org ftp ……。 当然这在全局定义变量时,并不是必须的,你可以用#号注掉,或删除;我在这里写了一个 rsyncd.motd的内容为:
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
2002------2009
++++++++++++++++++++++++++++++++++++++++++++++
3、服务器端启动
usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
可能需要root权限运行.
/etc/rsyncd/rsyncd.conf 是你刚才编辑的rsyncd.conf的位置.
也可以在/etc/init.d/rc.local里加入让系统自动启动等.
客户端同步
rsync -参数 用户名@同步服务器的IP::rsyncd.conf中那个方括号里的内容 本地存放路径 如:
rsync -avzP nemo@192.168.10.1::nemo /backup
说明:
-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。
4、防火墙配置:
Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。
#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
#iptables -L 查看一下防火墙是不是打开了 873端口
rsync默认端口是873