一、rsync功能介绍: 复制 (同步)的工具
全量及增量
本地和远程
Rsync英文全称为Remotesynchronization
本地复制cp(全量备份),rsunc也有此功能(增量)
远程复制scp(全量备份),rsync也有此功能(增量)
删除工具rm,rsync也有此功能
二、 Rsync的特性
支持拷贝特殊文件如链接文件,设备等
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 - p
可以实现增量同步,即只同步发生变化的数据,因此数据传输效率很高(tar-N)
可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)
可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****
支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像
注:cp scp rm仅仅是命令
rsync除了作为命令使用,还可以服务使用(持续运行一个进程)
client/server;客户端/服务器
brower/server:浏览器/服务器
三、 rsync 的三种工作模式:
1、用参数选项说明:
-v,--verhose 详细模式输出,传输时的进度等信息
-z,--compress 传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩
-a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于–rtopgD1
===========================================================================
-r,--recursive对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r
-t,--time 保持文件时间信息
-o,-owner 保持文件属主信息
-p,--perms 保持文件权限
-g,--group 保持文件属组信息
-p,--progress 显示同步的过程及传输时的进度等信息
-D,--devices 保持设备文件信息
-i,-links 保留软连接
-e,--rsh=COMMAND 使用的信道协议,指定替代rsh的shell。例如:ssh
--exclude=PATTERN 指定排除不需要传输的文件模式(和tar参数一样)
--exclude-from=file(文件名所在的目录文件)(和tar参数一样)
--bwlimit-RATE limit socket I/O bandwidth (限速功能)
2、本地复制/删除:
本地复制:用法类似cp 拷贝文件或目录(copy) -i操作前确认,-p保持属性,-r目录。-a(dpr)
[[email protected] opt]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
[[email protected] opt]# rsync -v /etc/hosts /opt/d
hosts
sent 227 bytes received 31 bytes 516.00 bytes/sec
total size is 158 speedup is 0.61
[[email protected] opt]# cat d
127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4
::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
本地删除:让null目录的内容和/tmp目录一样(删除原理)
rsync -avz --delete /null/ /tmp/
rsync -avz --delete /null/ /
3、 通过通道(ssh,rsh)拷贝(异机)
push:推动
rsync –avz /opt [email protected]:/tmp/
pull:从服务器拽
rsync –avz [email protected]:/tmp//tmp/
借助SSH通道(加密传输):
push:推动
rsync –avz –e ‘ssh –p 22’ /opt [email protected]:/tmp/
pull:从服务器拽
rsync –avz –e ‘ssh –p 22’[email protected]:/tmp//tmp/
注:将来可以做密匙认证,传输时候可以不用密码了
4、服务模式(daemon)*****
client /server
客户端 /服务器
定角色:
client:nfs01,m01 server:backup
1)服务端操作:
[[email protected] ~]# cat /etc/rsyncd.conf
#rsync_config_________________________start
#created by oldboy 15:01 2016-06-04
#rsyncd.conf start#
uid = rsync #==>用户 远端的命令使用rsync访问共享的目录
gid = rsync #==>用户组
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 #==>rsync的日志文件
[backup] #==>模块名称
path = /backup #==>服务器端提供访问的目录
ignore errors #==>忽略错误信息
read only = false #==>客户端是否可上传
list = false #==>不能列表(不能ls)
hosts allow =172.16.1.0/24 #==>允许那些服务器连接
(这俩host二者留其一就可以;不然外网IP也能推送数据过来)
hosts deny =0.0.0.0/32 #==>拒绝那些机器连接
auth users = rsync_backup #==>虚拟用户
secrets file = /etc/rsync.password #==>存放虚拟账号的用户和密码
#rsync_config_______________end
===================================================================
===================================================================
[[email protected] ~]# mkdir /backup –p
==================================================
[[email protected] ~]# id rsync
id: rsync:无此用户
[[email protected] ~]# useradd -s /sbin/nologin rsync -M
[[email protected] ~]# id rsync
uid=501(rsync) gid=501(rsync) 组=501(rsync)
========================================================
[[email protected] ~]# ll -ld /backup
drwxr-xr-x 2 root root 4096 9月 23 18:52 /backup
[[email protected] ~]# chown -R rsync.rsync /backup/
[[email protected] ~]# ll -ld /backup
drwxr-xr-x 2 rsync rsync 4096 9月 23 18:52 /backup
================================================================
[[email protected] ~]# ll /etc/rsync.password
ls: 无法访问/etc/rsync.password: 没有那个文件或目录
[[email protected] ~]# echo "rsync_backup:oldboy" >/etc/rsync.password
[[email protected] ~]# ll /etc/rsync.password
-rw-r--r-- 1 root root 20 9月 23 18:58 /etc/rsync.password
[[email protected] ~]# chmod 600 /etc/rsync.password
[[email protected] ~]# ll /etc/rsync.password
-rw------- 1 root root 20 9月 23 18:58 /etc/rsync.password
===================================================================
[[email protected] ~]# rsync --daemon
[[email protected] ~]# netstat -lntup|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3649/rsync
tcp 0 0 :::873 :::* LISTEN 3649/rsync
2)客户端操作:
[[email protected] ~]# echo "oldboy" >/etc/rsync.password
[[email protected] ~]# ll /etc/rsync.password
-rw-r--r-- 1 root root 7 9月 23 19:04 /etc/rsync.password
[[email protected] ~]# chmod 600 /etc/rsync.password
[[email protected] ~]# ll /etc/rsync.password
-rw------- 1 root root 7 9月 23 19:04 /etc/rsync.password
推送命令:
[[email protected] ~]# rsync -avz /tmp/ [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
sent 920 bytes received 13 bytes 88.86 bytes/sec
total size is 698 speedup is 0.75
[[email protected] ~]# touch /tmp/oldboy.txt
[[email protected] ~]# rsync -avz /tmp/ [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
./
oldboy.txt
sent 979 bytes received 35 bytes 96.57 bytes/sec
total size is 698 speedup is 0.69
四、#####总结:”rsync服务端与客户端配置步骤
***====Rsync服务端:
1、查看rsync安装包
rpm -qa rsync
2、添加rsync服务的用户,管理本地目录的
useradd -s /sbin/nologin -M rsync
id rsync
3、生成rsyncd.conf配置文件
vi /etc/rsyncd.conf放入事先准备的配置。man rsyncd.conf去查(http://www.samba.org/ftp/rsync/rsyncd.conf.html)。
4、根据rsyncd.conf的auth users配置账户,远程连接的。
并根据secrets file参数生成密码文件
echo "rsync_backup:oldboy">/etc/rsync.password
cat /etc/rsync.password
5、为密码文件配置权限
chmod 600 /etc/rsync.password
ls -l /etc/rsync.password
6、创建共享的目录并授权rsync服务管理
mkdir /backup -p
chown -R rsync.rsync /backup
如果没有/backup目录,就会chdirfailed。
7、启动rsync服务并检查
rsync --daemon
ps -ef|grep rsync|grep -v grep
lsof -i :873
8、加入开机自启动
echo "/usr/bin/rsync --daemon">>/etc/rc.local
tail -1 /etc/rc.local
(over)
***===rsync客户端
1、生成连接服务器需要的密码文件
echo "oldboy" >/etc/rsync.password
cat /etc/rsync.password
2、为密码文件配置权限
chmod 600 /etc/rsync.password
ls -l /etc/rsync.password
3、同步文件
推送:
rsync -avz /tmp/[email protected]::oldboy --password-file=/etc/rsync.password
rsync -avz /tmp/rsync://[email protected]/backup/ --password-file=/etc/rsync.password
拉取:
rsync -avz [email protected]::oldboy /tmp/--password-file=/etc/rsync.password
rsync -avz rsync://[email protected]/backup//tmp/ --password-file=/etc/rsync.password
提示:上述的backup为模块名,不是路径。
五、 Rsync排错思路
1、 Rsync守护进程服务传输数据排错思路:
※rsync服务器拍错思路:
1)查看rsync服务配置文件路径是否正确,正确的默认路径为:/etc/rsyncd.conf
2)查看配置文件里host allow,host deny,允许的ip网段是否是允许客户端访问的ip网段
3)查看配置文件中path参数里的路径是否存在,权限是否正确(正常应为配置文件中的UID参数对应的属主和组)
4)查看rsync服务是否启动。查看命令为:ps –ef|grep rsync。端口是否在netstat –lnt|grep 873
5)查看iptables防火墙和selinux是否开启允许rsync服务通过,也可以考虑关闭
6)查看服务器rsync配置的密码文件是否为600的权限,密码文件格式是否正确,正确格式为用户名:密码,文件路径和配置文件里的secrectfiles参数对应
7)如果是推送数据,要查看下,配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限
2、 ※Rsync客户端排错思路
1)查看客户端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,注意:仅需要有密码,并且和服务端的密码一致
2、用telnet连接rsync服务器ip地址873端口,查看服务是否启动(可测试服务端防火前是否阻挡)telnet 10.0.0.141 873
3)客户端执行命令时rsync –avzP [email protected]::oldboy/test/test/ --password-file=/etc/rsync.password
注:此命令细节牢记,尤其10.0.0.41::oldboy/test/处的双冒号及随其后的oldboy为模块名称
3、自我模拟排错实践
不正规操作,自己排查熟悉操作流程
六、Rsync优缺点
rsync优点:
1、 增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)
2、 远程Shell通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务
rsync缺点:
1、 大量小文件实时同步的时候,比对时间较长,有的时候,同步过程中,rsync进程可能会停止,僵死
2、 同步大文件,10G这样的大文件有时也会出问题,中断。未完整同步前,是隐藏文件,可以通过续传(--partial)等参数实现传输
3、 一次性远程拷贝可以用scp,大量小文件要达成一个包再拷贝