曲径通幽论坛

标题: 搭建 rsync 服务器 [打印本页]

作者: beyes    时间: 2012-4-23 13:32
标题: 搭建 rsync 服务器
在 《使用 lftp 作为 sftp 客户端进行备份
》里介绍过使用 lftp 对网站进行增量备份,实际上还有一种高效的方式,即使用 rsync 服务器。在客户端使用 rsync 工具连接安装有 rsync 服务的服务器,可以很方便的对网站进行增量备份,如对论坛一类网站的附件备份尤显得方便。


1.安装
对于 RedHat, CentOS 服务器:
#yum install rsync

对于 Debian, Ubuntu 服务器:
#apt-get install rsync

安装完后,就可以对服务器进行配置了。


服务器配置涉及到 3 个文件:
rsyncd.conf :服务器配置主文件
rsyncd.secrets :登录 rsync 服务器用户名和密码文件
rsyncd.motd:rsync 服务器信息文件,显示用户登录信息,如同 FTP 服务器中的欢迎信息。

这 3 个文件需要我们手动建立:
# mkdir /etc/rsyncd
# touch /etc/rsyncd/rsyncd.conf
# touch /etc/rsyncd/rsyncd.secrets
# touch
/etc/rsyncd/rsyncd.motd

可以随便的简单写一些内容到 rsyncd.modt 中,比如:
# cat /etc/rsyncd/rsyncd.motd
-----------------------
welcome to groad.net
-----------------------

下面在 rsyncd.secrets 中写入一个用户名和密码,它在客户端连接服务器时使用,为了安全起见,该用户名和密码不要和系统内置用户名密码相同,比如:
# cat /etc/rsyncd/rsyncd.secrets
beyes:123456

最后,简单配置一下主配置文件 rsyncd.conf ,其内容为:
# cat /etc/rsyncd/rsyncd.conf

pid file = /var/run/rsyncd.pid

port = 873

address = 192.168.1.102

use chroot = yes
read only = yes

hosts allow=192.168.1.0/255.255.255.0
hosts deny=*

max connections = 5
motd file = /etc/rsyncd/rsyncd.motd


timeout = 600

[wwwroot]   
uid = root
gid = root
path = /var/www/html/dz/p_w_uploads
list = yes
ignore errors
auth users = beyes
secrets file = /etc/rsyncd/rsyncd.secrets
comment = www_root_home

下面说明一下上面的配置参数:
[Plain Text] 纯文本查看 复制代码
pid file = /var/run/rsyncd.pid

pid file 是全局参数,它要求 rsync 守护进程将自己的 PID 写到该文件中,如果该文件已经存在,那么 rsync 守护进程将终止写入该文件而不是重写覆盖它。

[Plain Text] 纯文本查看 复制代码
port = 873

873 是默认的监听端口,也可以指定其它的。

[Plain Text] 纯文本查看 复制代码
address = 192.168.1.102

指定服务器 IP 地址。

[Plain Text] 纯文本查看 复制代码
use chroot = yes

在开始文件传输前,rsync 守护进程将 chroot 到指定路径中。设置该选项的有点是增强了系统的安全性,其缺点是需要超级用户权限,并且没法获取符号链接文件所指的真实文件,即只能获取符号链接文件本身。

[Plain Text] 纯文本查看 复制代码
read only = yes

客户端对服务器只读。

[Plain Text] 纯文本查看 复制代码
hosts allow=192.168.1.0/255.255.255.0

设置可以连接服务器的 IP 地址范围。

[Plain Text] 纯文本查看 复制代码
hosts deny=*

除了 hosts allow 所允许的范围外其他的连接都将被禁止。

[Plain Text] 纯文本查看 复制代码
max connections = 5

客户端最大连接数。

[Plain Text] 纯文本查看 复制代码
motd file = /etc/rsyncd/rsyncd.motd

指定 rsyncd.motd 文件路径。

[Plain Text] 纯文本查看 复制代码
timeout = 600

定义连接超时时间,秒为单位,此处为 10 分钟。

[Plain Text] 纯文本查看 复制代码
[wwwroot]

用中括号括起来的标识为自定义一个模块。

[Plain Text] 纯文本查看 复制代码
path = /var/www/html/dz/p_w_uploads

定义要增量同步的目录。

[Plain Text] 纯文本查看 复制代码
list = yes

允许列出服务器上的目录。

[Plain Text] 纯文本查看 复制代码
ignore errors

忽略 I/O 错误。

[Plain Text] 纯文本查看 复制代码
auth users = beyes

授权一个用户。

[Plain Text] 纯文本查看 复制代码
secrets file = /etc/rsyncd/rsyncd.secrets

指定用户名和密码文件。

[Plain Text] 纯文本查看 复制代码
comment = www_root_home

给模块添加一些注释内容。

rsync 主配置文件中的书写语法,配置参数等详细说明见 http://everythinglinux.org/rsync/

在配置完毕后,先添加 iptables 防火墙规则,使其允许客户端连接:
iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT

以守护进程方式启动 rsync 服务器:
/usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf

使用 rsync 客户端连接并同步:
root@bt:~/wwwroot# rsync -avzP beyes@192.168.1.102::wwwroot wwwroot
-----------------------
welcome to groad.net
-----------------------

Password:
receiving incremental file list
./
some.txt
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=2/7)

sent 81 bytes  received 326 bytes  116.29 bytes/sec
total size is 13  speedup is 0.03
上面的 some.txt 是后来新增文件,之前已经同步过一次,因此该次同步时只备份 some.txt 这个文件。在 rsync 连接命令中,指定了用户 beyes (接着会提示输入 rsyncd.secrets 中设置的密码),并在服务器 IP 后指定了模块的名称 wwwroot ,命令行中的最后一个参数 wwwroot 指定一个本地目录,即将服务器上的内容同步到该目录中。



作者: beyes    时间: 2012-4-25 07:55
1. uid 和 gid 的设置

uid 和 gid 标识备份是以什么身份进行的。如果将其设置为 root,那么 rsync几乎可以读取任何文件和目录,虽然方便,但同时也带来了安全隐患。

因为出于安全目的,文件的属性必需是只有属主可读,否则 rsync将拒绝运行,因此我们可以设置它的属性为 600,如若不行,那么改为 400 。
2. 关于 address 的指定

在某些网络情况下,address 可能不需要指定,否则会出。





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2