Rsync: 是一款开源的,快速的,多功能的,可实现全量及增量备份的本地或远程的数据同步备份的工具。
一. rsync 的特点:
- 支持拷贝特殊文件:如 连接文件,设备等。
- 可以有排除指定文件或目录的功能,相当于打包命令tar 的排除功能
- 可以做到保持原文件或目录的权限,时间,软硬连接,属主,属组等所有属性均不改变。
- 可实现增量同步,,即只同步变化的根据因此数据传输使用效率很高
- 可以rcp ,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)
- 支持匿名或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。
二. rsync 的工作方式:
- 作为客户端命令
拷贝文件或目录,相当于cp
参数:
-v 显示详细信息
-z传输时进行压缩
-r 递归模式
-t 保持文件的时间信息
-o:保持文件的属性信息
-g:属组信息
-p:保持文件的权限
1)环境检查:
[root@backup ~]# cat /etc/centos-release ###查看系统版本
CentOS release 6.6 (Final)
[root@backup ~]# uname -m #查看版本信息
x86_64
[root@backup ~]# uname -r ###查看内核版本
2.6.32-504.el6.x86_64
[root@backup ~]# rsync --version ####查看rsync版本信息
rsync version 3.0.6 protocol version 30
[root@backup ~]# rpm -qa rsync ###查看rsync 安装包
rsync-3.0.6-12.el6.x86_64
服务器端配置:
第一步:生成rsyncd.conf配置文件:
配置文件参数说明:
#rsync_config__start
#created by danny 17:01 20181011
#QQ 1596023034 youxiang:[email protected]
##rsyncd.conf start##
uid = rsync #用户 远端的命令使用rsync访问共享目录
gid = rsync #用户组gid
use chroot = no #安全相关(由于是内网,暂时不用,)
max connections = 200 #最大连接数
timeout = 300 #超时参数
pid file = /var/run/rsyncd.pid #进程对应的进程号文件
lock file = /var/run/rsync.lock #锁文件,防止文件不一致
log file = /var/log/rsyncd.log #日志文件
[backup] #模块
path = /backup #服务器端提供访问的目录 (共享的目录)
ignore errors #忽略错误
read only = false #可写
list = false #不能列表
hosts allow = 172.16.1.0/24 #允许的网段
hosts deny = 0.0.0.0/32 #拒绝的网段==谁都可以过来
auth users = rsync_backup #连接的虚拟用户,非系统用户
secrets file = /etc/rsync.password #虚拟用户的账号密码文件
#rsync_config_____end
第二步 :
[root@backup ~]# useradd rsync -s /sbin/nologin -M ###添加用户
[root@backup ~]# tail -1 /etc/passwd ####查看
rsync:x:502:502::/home/rsync:/sbin/nologin
[root@backup ~]# mkdir /backup ####创建共享目录
[root@backup ~]# chown -R rsync.rsync /backup/ ####授权目录
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 4096 Aug 21 12:53 /backup/
[root@backup ~]# rsync --daemon ###开启rsync服务并检查
[root@backup ~]# ps -ef |grep rsync |grep -v grep
root 1626 1523 0 12:20 pts/0 00:00:00 vim /etc/rsyncd.conf
root 1641 1523 0 12:24 pts/0 00:00:00 vim /etc/rsyncd.conf
root 1747 1 0 12:52 ? 00:00:00 rsync --daemon
[root@backup ~]# vi /etc/rsync.password ####虚拟用户创建密码
rsync_backup:123456
[root@backup ~]# cat /etc/rsync.password
rsync_backup:123456
[root@backup ~]# chmod 600 /etc/rsync.password ####给密码设置权限
[root@backup ~]# ls -l /etc/rsync.password ####查看rsync.password
-rw------- 1 root root 20 Aug 21 12:59 /etc/rsync.password
[root@backup ~]# lsof -i :873 #####查看端口号对应的服务
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 1747 root 4u IPv4 13507 0t0 TCP :rsync (LISTEN)
rsync 1747 root 5u IPv6 13508 0t0 TCP :rsync (LISTEN)
[root@backup ~]# netstat -lntup|grep 873 ####查看端口号对应的服务
tcp 0 0 0.0.0.0:873 0.0.0.0: LISTEN 1747/rsync
tcp 0 0 :::873 ::: LISTEN 1747/rsync
第三步:加入开机自启动:
[root@backup ~]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local
[root@backup ~]# tail -1 /etc/rc.local
/usr/bin/rsync --daemon
第四步:客户端配置
[root@nfs01 ~]# rpm -qa rsync ###查看rsync是否安装rpm包
rsync-3.0.6-12.el6.x86_64
[root@nfs01 ~]# vim /etc/rsync.password ###密码和服务器端的密码文件一样
123456
客户端--->服务器端 ---推送数据:
[root@web ~]# rsync -avz /backup/ rsync://rsync_danny@IP/backup/ --password-file=/etc/rsync.password
password file must not be other-accessible
continuing without password file
Password: ##### 密码:123456
sending incremental file list
./
a
b
c
d
e
f
g
test1
sent 131014 bytes received 163 bytes 3320.94 bytes/sec
total size is 134217728 speedup is 1023.18
客户端---->服务器端---->拉数据:
[root@web backup]# rsync -avz rsync://[email protected]/backup/ /backup/ --password-file=/etc/rsync.password
password file must not be other-accessible
continuing without password file
Password: ###密码:123456
receiving incremental file list
./
a
b
c
d
e
f
g
sent 200 bytes received 412 bytes 26.04 bytes/sec
total size is 0 speedup is 0.00
rsync 多模块配置:
- 服务器端的配置:
下面是rsync 的配置文件:/etc/rsyncd.conf 内容:其中[danny]是我自己新加的模块:其中代表的含义上面已经注释过了。
在实际的配置过程中出现了客户端往服务器端推送数据失败:
报错信息:
[root@web backup]# rsync -avz /backup/ rsync://[email protected]/danny/ --password-file=/etc/rsync.password
password file must not be other-accessible
continuing without password file
Password:
@ERROR: auth failed on module danny
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
查找了半天都没有找到原因,后来又看了下配置文件下的各个参数的含义,找到了是密码的问题,这里增加了[danny]模块,密码配置文件里应该有虚拟用户 auth users = rsync_danny对应的密码,密码配置文件下的参数如下:
否则客户端推送文件时找不到用户对应的密码,因此会导致推送失败
客户端配置如下:
小结:
在多个模块的情况下,应该注意;
服务器端:
path = /danny ####路径
auth users = ####用户
secrets file = /etc/rsync.password #####密码文件
Vi /etc/rsync.pasword 密码文件里:
用户:密码
客户端直接放置服务的配置的密码字符串就可以了,目前来看没有这方面的故障
我在这几个地方都出现了问题导致文件推送失败
重要的是要熟练掌握服务的部署
配置文件各个参数的含义
以防出错后不知道从何下手排查错误。
每天巩固旧知识,学习新知识。
活学灵用!
今日小结完毕!