在 《使用 lftp 作为 sftp 客户端进行备份 》里介绍过使用 lftp 对网站进行增量备份,实际上还有一种高效的方式,即使用 rsync 服务器。在客户端使用 rsync 工具连接安装有 rsync 服务的服务器,可以很方便的对网站进行增量备份,如对论坛一类网站的附件备份尤显得方便。 |
1.安装
对于 RedHat, CentOS 服务器:
对于 Debian, Ubuntu 服务器:
安装完后,就可以对服务器进行配置了。
服务器配置涉及到 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 指定一个本地目录,即将服务器上的内容同步到该目录中。
|