rsync使用总结

3.1Rsync介绍:

1、定义:是开源的、快速的、多功能的、全备份、增量(选择)备份的本地或远程的数据同步的备份工具。该软件适用多种操作系统。

2、远程拷贝:相当于ssh带的scp命令,但是scp每次都是全量拷贝。Rsync可以是增量拷贝。

Centos5rsync2.x比对方法是,把所有的问题比对一边,然后进行同步。

Centos6,rsync3.x 可以实现增量比对。

 

3.2Rsync在客户端的作用比较:

远程拷贝:scp

本地拷贝:相当于cp覆盖备份

删除功能:rm

可以是一个网络服务(Port  socket

rsync的三种特性。通过ssh远程、通过客户端操作备份到服务端、 rsync daemon

3.3rsync客户端服务的参数介绍:

Rsync主要是提供内网服务的

[root@wjw66 ~]# rpm -qa rsync 查看软件是否安装。

rsync-3.0.6-12.el6.x86_64

Rsync客户端参数介绍:

-z压缩 --compress 传输时进行压缩以提高传输效率,--compress-level=NUM可以按级别压缩,

-a --archive 表示按递归方式来传输文件,保持文件所有属性。等价于-rtopgDl,

-v显示信息输出过程、         

-t, --times保持文件时间信息

-o, --ower 保持文件属性信息

 -P--progress 显示同步的过程及传输时的进度信息

-D --device 保持设备文件属性

-r, --recursive 对子目录递归模式,即目录下所有目录都同样传输,注意小写r

-e--rsh=COMMAND 使用信道协议,指定替代rshshell程序

例如:ssh

exclude=PATTERN 指定排除不需要传输的文件模式

exclude-from=file(文件名所在的目录文件)

bwlimit=RATE     limitsocket  I/O  bandwidth

--files-from= 指定同步列表文件中的目录或者是指定的文件

--delete:参数适用于增量备份,适用于不同文件或者目录进行比对然后备份

 

Avz相当于vzrtopgDl  生产参数:-avz或者是-vzrtopg

rsync同步指定目录

rsync使用–include参数与–exclude参数来实现同步指定目录,并且–exclude目录放在后面。

3.4rsync软件服务的工作模式

第一种工作模式:本地单个服务器上不同路径文件或目录下的数据的备份

演示:相当于cp

[root@client01 opt]# rsync -avz /opt/test01/opt/test02

sending incremental file list

test01

sent 75 bytes received 31 bytes  212.00 bytes/sec

total size is 4 speedup is 0.04

 [root@client01 opt]# cat test0*

234

234

[root@client01 opt]# rsync -avz /opt/test02 /tmp/

sending incremental file list

test02

sent 75 bytes received 31 bytes  212.00bytes/sec

total size is 4 speedup is 0.04

[root@client01 opt]# cat /tmp/test02

234

第二种工作模式:不同服务器之间数据进行传输

演示:

  Access viaremote shell:      远端            本地

        Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

        Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

                            本地         远端

 

1.借助ssh通道从远端主机拉取数据实例:

rsync -avzP -e 'ssh -p 52113'[email protected]:/tmp/  /tmp

语法说明:

1-avz相当于-vzrtopgDl,表示同步时文件户目录属性不变,

2-P显示同步的过程,可以用--progress替换

3-essh -p 52113 表示通过ssh传输数据,-p22可以省略

4[email protected]:/tmp/ 远程主机的系统用户,地址,路径

5/tmp本地的路径

注意tmp后面的/,否则把tmp目录及tmp目录下的所有东西都拉到本地/tmp下了

 

演示:推送,把本地的目录文件推送到远程服务器指定的目录下

[root@client01 opt]# ifconfig eth0|awk -F '[ :]+''NR==2{print $4}'

10.0.0.11

[root@client01 opt]# ll /opt/

total 12

drwxr-xr-x. 2 root root 4096 Mar 26  2015 rh

-rw-r--r--. 1 root root    4 Mar 12 18:04 test01

-rw-r--r--. 1 root root    4 Mar 12 18:04 test02

把本地目录/opt/下文件拉到远程服务器/opt/下

[root@client01 opt]# rsync -avz -e "ssh -p52113" /opt/ [email protected]:/opt/

[email protected]'s password:

sending incremental file list

test01

test02

 

sent 159 bytes received 51 bytes  60.00 bytes/sec

total size is 8 speedup is 0.04

[root@zabbix-server opt]# ifconfig eth0|awk -F '[:]+' 'NR==2{print $4}'

10.0.0.10

[root@zabbix-server opt]# ls

rh

[root@zabbix-server opt]# ll

total 12

drwxr-xr-x. 2 root root 4096 Mar 26  2015 rh

-rw-r--r--. 1 root root    4 Mar 12 18:04 test01

-rw-r--r--. 1 root root    4 Mar 12 18:04 test02

 

把远端服务器上的目录文件拉到本地服务器的/opt/目录下

[root@client01 opt]# ls

[root@client01 opt]# rsync -avz -e "ssh -p52113" [email protected]:/opt/ /opt/(显示传输的结果)

[root@client01 opt]# rsync -azP -e "ssh -p52113" [email protected]:/opt/ /opt/(显示信息同步的过程及传输时的进度信息)

[email protected]'s password:

receiving incremental file list

./

test01

test02

opt/

opt/test01

opt/test02

opt/rh/

rh/

 

sent 102 bytes received 334 bytes  34.88bytes/sec

total size is 16 speedup is 0.04

[root@client01 opt]# ls

opt  rh  test01 test02

[root@client01 opt]# pwd

/opt

 

以上例子都是增量选择性备份,而不是全部覆盖。如果本地文件独有的,不会被从外地拉过来的文件内容所替换。而且外部文件独有的也不会被推过去的本地文件所覆盖。

第三种工作模式

  Access viarsync daemon:

        Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

              rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

        Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

              rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

 

 

[root@Backup ~]# vi /etc/rsyncd.conf

#Rsync server

#Rsync server

#created by jianwei 15:01 2009-6-5

##rsyncd.conf start##

uid = rsync它是对共享目录的权限/backup

gid = rsync

use chroot = no 程序出现问题就会开启 开启给个空目录就行

max connections = 2000 客户端连接数 可以同时连接

time out = 600超时的参数,

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock  锁文件

log file = /var/run/rsyncd.log  日志,发现错误时,看此日志分析错误

ignore errors 忽略错误

read only = false可读写

list = false 不让列表,不让看服务端有什么

hosts allow = 10.0.0.9/24 允许的网段,通过它,才可以连接访问服务器的/backup下的数据

hosts deny = 10.0.0.0/3拒绝的网段

auth users = rsync_backup 认证用户 ,虚拟用户,和系统没有关系

secrets file = /etc/rsync.password 存放用户和密码的文件

#######################################################

[backup] 模块

comment = backup server by jianwei 14:18 2012-1-13 注释

path = /backup 共享的目录,

 

 

rsync server 服务端配置步骤

1vi /etc/rsyncd.conf

   cat/etc/rsyncd.conf

2、创建用户和共享的目录/backup

useradd rsync -s /sbin/nologin -M

id rsync

mkdir /backup

chown -R rsync /backup

3、创建用户及密码文件

echo "rsync_backup:jianwei" >/etc/rsync.password

cat /etc/rsync.password

 ll/etc/rsync.password

chmod 600 /etc/rsync.password

4rsync --daemon 启动服务

ps -ef|grep rsync|grep -v grep   netstat -lntup|grep rsync  ss -lntup|grep rsync  lsof -i :873

5、加入开机自动挂载

echo " rsync --daemon">>/etc/rc.local

cat /etc/rc.local

注意:服务端只能存放数据,相当于一个硬盘或U。它只具有存放数据的功能,其他什么都不能干。

 

Rsync 客户端配置pullpush 都在客户端操作)

1、创建密码文件

echo jianwei >/etc/rsync.password

cat /etc/rsync.password

chmod 600 /etc/rsync.password

 ls -l/etc/rsync.password

2Rsync

Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

rsync -avz /tmp/ [email protected]::backup--password-file=/etc/rsync.password 

Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

rsync -avz [email protected]::backup /tmp/ --password-file=/etc/rsync.password

 

注意:客户端可以向服务端存放数据(推push),也可以像服务端提取数据(拉pull)作用主要是服务端

 

rsync -avz [email protected]::mhttongbu1 /tmp/ --password-file=/etc/passwd.txt

rsync -avz /tmp/ [email protected]::mhttongbu1--password-file=/etc/passwd.txt

rsync -avz /tmp/ rsync://[email protected]/backup--password-file=/etc/rsync.password 

 

3.5Rsync守护进程服务传输排错思路

一、rsync服务端排错思路

1、查看rsync服务配置文件路径是否正确,正确的默认路径为/etc/rsyncd.conf

2、查看配置文件里hostallow,host deny,允许的ip网段是否是允许反问的ip网段

3、查看配置文件中path参数里的路径是否存在,权限是否正确,(正常应为配置文件中的UID参数对应的属主和组)

4、查看rsync服务是否启动。

5、查看防火墙和seLinux是否开启允许rsync服务通过,也可以考虑关闭

6、参看服务端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,正确格式用户名:密码,文件路径和配置文件里的secrectfiles 参数对应。

如果是推送数据,要查看一下,配置文件rsyncd.conf中用户是否对模块下目录有可读写权限。

二、rsync客户端排错思想:

1、查看客户端rsync配置文件的密码文件是否为600的权限,密码格式是否正确,注意需要有密码,并且和服务端的密码五一致,

2、用telnet连接rsync服务器ip地址873端口,查看服务是否启动(可测试服务端防火墙是否阻挡)。Telnet 10.0.1.41 873

3、客户端执行命令时,rsync-avzP [email protected]::backup /tmp/ /tmp/ --password-file=/etc/rsync.password  此命令细节要记清楚。

 

3.6自我模拟排错实践:

1、密码设置错

[root@nfs01 tmp]# rsync -avz /tmp/rsync://[email protected]/backup --password-file=/etc/rsync.password

@ERROR: auth failed on module backup

rsync error: error startingclient-server protocol (code 5) at main.c(1503) [sender=3.0.6]

这是因为密码设置错了,检查一下客户端和服务端两端的密码/etc/rsync.password文件中密码是否一致。密码文件中,密码是不允许有多余空格的。

2、服务端的共享目录被删除

[root@nfs01 tmp]# rsync -avz /tmp/rsync://[email protected]/backup --password-file=/etc/rsync.password

@ERROR: chdir failed

rsync error: error starting client-server protocol(code 5) at main.c(1503) [sender=3.0.6]

出现这种错误说明服务端的共享目录被删除了,所以在服务端把删除的共享目录创建回来(但是共享目录中的数据全部丢失,实际工作中切记不能删除服务端的共享目录)

做法得有:mkdir /backup/ -p 只做到这一步是不行的,还会报错。

还必须得chown rsync.rsync /backup/才行。      

服务端必须得有这两步:

root@backup /]# mkdir backup

[root@backup /]# chown -R rsync /backup/

 

 rsync -avz/tmp/ rsync://[email protected]/backup--password-file=/etc/rsync.password

sending incremental file list

./

rsync: failed to set times on "." (inbackup): Operation not permitted (1)

a.txt

b.txt

c.txt

stu1

test.log

rsync: recv_generator: mkdir ".ICE-unix"(in backup) failed: Permission denied (13)

*** Skipping any contents from this faileddirectory ***

rsync: mkstemp ".a.txt.KD6GT3" (inbackup) failed: Permission denied (13)

rsync: mkstemp ".b.txt.MBzoKP" (in backup)failed: Permission denied (13)

rsync: mkstemp ".c.txt.QKA7AB" (inbackup) failed: Permission denied (13)

rsync: mkstemp ".stu1.Eh9Qrn" (in backup)failed: Permission denied (13)

rsync: mkstemp ".stu2.epUBi9" (in backup)failed: Permission denied (13)

sent 741 bytes received 186 bytes  618.00bytes/sec

total size is 1952 speedup is 2.11

rsync error: some files/attrs were not transferred(see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

 

出现以下这种错误跟上面的是问题是一样的,只不过是把/etc/rsyncd.conf配置文件中的

use chroot = no  改为了use chroot = yes

[root@nfs01 tmp]# rsync -avz  rsync://[email protected]/backup  /tmp/ --password-file=/etc/rsync.password

@ERROR: chroot failed

rsync error: error startingclient-server protocol (code 5) at main.c(1503) [receiver=3.0.6]

修改方法和上面的一样

 

3、客户端的/etc/rsync.password和服务端的/etc/rsync.password没有任何联系,只要和客户端rsync命令参数----password-file=/etc/rsync.password 中的路径对应即可。

 

4、服务端和客户端的/etc/rsync.password 密码文件权限不是600

[root@nfs01 tmp]# rsync -avz rsync://[email protected]/backup /tmp/ --password-file=/etc/rsync.password

password file must not be other-accessible

continuing without password file

Password:

@ERROR: auth failed on module backup

rsync error: error starting client-server protocol(code 5) at main.c(1503) [receiver=3.0.6]

出现这种错误,原因是把服务端的/etc/rsync.password 密码文件权限给改了,不是600了(客户端密码文件权限是600)。

  必须chmod  600  /etc/rsync.password 改回才行

 

[root@nfs01 tmp]#  rsync -avz rsync://[email protected]/backup /tmp/ --password-file=/etc/rsync.password

password file must not be other-accessible

continuing without password file

Password:  此处出现提醒输入密码(原因是客户端的密码文件/etc/rsync.password

receiving incremental file list                             权限不是600)

           如果客户端和服务端密码都是600,就会自动完成数据的提取和备份

./         

a.txt

b.txt

c.txt

stu1

stu2

stu3

stu4

stu5

test.log

 

sent 275 bytes received 631 bytes  201.33bytes/sec

total size is 3233 speedup is 3.57

 

5、客户端一切问题都正常但是配置文件中的path = /backup#注释掉了

  但是服务端[root@backup backup]# vi /etc/rsyncd.conf 配置文件稍作改动,客户端正常输出,但是不显示输出的文件,而且服务端的数据没有被提取到客户端/tmp/下

操作过程:

[root@nfs01 tmp]# rsync -avz  rsync://[email protected]/backup  /tmp/ --password-file=/etc/rsync.password

receiving incremental file list

./

sent 68 bytes received 161 bytes  152.67bytes/sec

total size is 21536 speedup is 94.04

[root@backup backup]# ls 服务端

a.txt b.txt  c.txt  stu1 stu2  stu3  stu4 stu5  test.log

[root@nfs01 tmp]# ls客户端

test.log

原因是:把配置文件中的path = /backup给#注释掉了,系统找不到传输数据的通道了,改回原来的就行

 

6.观察日志

[root@backup backup]# cat/var/log/rsyncd.log 定时任务的服务日志

 

3.7Rsync优点:

1、增量备份同步,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)

2、远程shell通道模式,还可以加密传输(ssh),socket(daemon)需要加密传输,还可以利用***服务或者ipsec服务

Rsync缺点:

1、大量小文件同步的时候,比对时间较长,有时候,rsync进程会停止。

解决方法:a打包同步,b.drbd(文件系统同步复制block)

2、同步大文件,10G这样的文件有时也会有问题,中断。为完整同步前,是影藏文件,同步完成改为正常文件。

3、Rsync -avz--delete /tmp/ ........无差异同步

推:本地有,远端就有,本地没有,删除远端独有的

危险,把服务端备份的数据干掉,尽量不要用。如果要用,就先备份远端的数据再推送。

拉:远端的数据会替换本地的数据。把本地独有的数据删除。要用就先备份本地数据。