服务端配置如下:
前提要安装 rsync。 yum -y install rsync
(1)打开 /etc/rsyncd.conf 配置。 更多的信息可以 man rsyncd.conf 查看。
uid = rsync --管理备份目录账号
gid = rsync ----管理备份目录的用户组
port=873 ----端口号
use chroot = no
max connections = 200 ----服务的最大连接数
timeout = 600 ----超时限制时间, 以秒为单位
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
fake super = yes
ignore errors
read only=false
list=false
hosts allow=192.168.15.140/24 ------允许其备份主机
hosts deny=0.0.0.0/24 ----拒绝其备份的主机
auth users=rsync_backup ----- 备份时候登录认证用户
secrets file=/etc/rsync.password ---- 认证用户及其密码文件
[backup] -------模块信息
comment="backup dir by li"
path=/backup
(2)按照配置文件完善一些没有加入的信息。
---- 上面配置文件uid那里需要一个用户, 创建一个虚拟用户rsync
------密码认证文件也需要完善。
把auth users= rsync_backup 这个需要密码认证的用户加入密码认证文件,密码是123(可以有多个这样的密码认证用户)。
修改密码认证文件权限,只让文件属主才有读写权限,其他人没有任何权限。 (体现安全保密)
-- -------创建备份目录并修改属组和属主的信息。
配置文件指定备份目录是 /backup 。
修改目录的 属组和属主是 rsync, 因为/etc/rsyncd.conf 的 uid 和 gid 指定管理备份目录人是 rsync 了。
启动服务
关闭selunx服务,即设置为 disabled 。 或者设置selunx服务为 Permissive
vim /etc/selinux/config
然后重启使得selinux永久有效。
客户端配置测试:
一· rsync 守护进程语法解释:
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Pull是客户端从服务端下载数据。
Push 从客户端向服务器上传数据。
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
SRC: 要推送备份的信息。
USER:指定认证用户。 这个认证用户是属于服务端的配置文件 /etc/rsyncd.conf 里面的auth users 的。
HOST: 指定远程主机的IP地址或者IP信息。
::DEST 备份服务器配置文件 /etc/rsyncd.conf 的模块信息。 也就是备份在哪个目录。
二 测试
客户端(192.168.15.140) 向服务端(192.168.15.139) 备份:
其中 rsync_backup 是 服务端配置的密码认证用户。 backup 是服务端的备份模块,不是路径!。
服务端检查备份结果:
客户端免密备份:
免密登录就是不用手动输入密码了。 在客户端创建一个文件,里面存着认证用户的密码即可。 比如存 rsync_backup 的密码在 /etc/rsync.password:
同样,保证密码文件安全,只有属主才可以看到,设置为600权限。
创建子目录备份
有时候, 多台服务器备份的时候可能有相同文件, 如果直接备份可能会造成覆盖, 这时候我们希望每个备份服务器在备份的时候为每台服务器准备一个特定目录来备份。
可以在 rsync -avz <备份数据路径> <认证用户>@<备份服务器IP>::<模块>/<新子目录>/
比如备份的内容在备份路径下创建一个字目录来备份, 比如在 /backup 下面的192.1698.15.140 来储存数据
注意:虽然在备份路径下能够创建子目录, 但是不能在子目录下方再创建子目录了!!
拉取数据:
客户端从服务端拉取数据到本地。 比如 192.168.15.139 从主机 192.168.15.140 的/backup/tt目录拉取数据到 /test/tt/yy目录。
语法格式: rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
USER: 是服务端的指定认证用户。 外界只有通过这个认证用户才可以拉取或者上传数据到服务端。
HOST : 服务端IP地址。
PORT是rsyncd 的端口。
SRC 是 服务端的模块名。 模块名后面可以加模块指向的路径下面的文件的具体路径。
比如 /backup/tt/yy 这个是备份模块backup 指向的路径, /tt/yy是这个路径的下方的文件。
rsync -avz rsync://rsync_backup@192.168.15.140:873/backup/tt/yy /test
rsync_backup 是模块名,其模块信息信息如下
[backup]
path=/backup
模块指向的路径path 是/backup , 所以完整的路径是 /backup + /tt/yy ,也就是 /backup/tt/yy 。 红体就是把 主机 192.168.15.140 的/backup/tt/yy 的文件
DEST 是把从服务端的数据拉取到本地的路径, 如上的拉取到/test这个地方。