Rsync. 1

1 Rsync介绍... 1

1.1 什么是Rsync?. 1

1.2 Rsync简介... 1

1.3 rsync的特性... 1

2 rsync的企业工作场景说明... 2

2.1 定时同步... 2

2.2 实时同步... 2

3 rsync的工作方式... 2

3.1 local2

3.2 Accessvia remote shell:3

3.3 Accessvia rsync daemon:4

4 rsync –daemon配置... 6

4.1 第一步... 6

4.2 第二步,创建rsync专用系统账户... 6

4.3 第三步,创建rsync专用目录... 7

4.4 第四步,创建配置文件... 7

4.5 第五步,创建密码配置文件... 7

4.6 第六步,启动rsync –daemon模式... 8

4.7 第七步,检验... 9

4.8 三种杀死进程的方法... 11

4.9rsync-daemon:排除文件... 12

5 rsync的优缺点... 14

5.1 rsync的优点... 14

5.2 rsync的缺点... 14

6 rsync限速... 14

6.1 scp限速100KB/s. 14

6.2 rsync限速1024KB/s. 14

7 rsync --daemon排错思路... 15

第8 Rsync常见错误... 15

8.1 问题一... 15

8.2 问题二... 15

8.3 问题三:... 16

8.4 问题四:... 16

8.5 问题五:... 16

8.6 问题六:... 16

8.7 问题七:... 16

8.8 问题八:... 16

8.9 问题九:... 17

8.10 问题十:17



Rsync

第1章 Rsync介绍

1.1 什么是Rsync?

rsync是一款开源的快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台

下面是官方的英文简单描述:rsync-afast,versatile,remote(and local)file-copying tool.

http://www.samba.org/ftp/rsync/rsync.html

 

1.2 Rsync简介

Rsync英文全称为Remote synchronization 从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh带的scp命令。但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以再本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令。但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。

一个rsync相当于scp,cp,rm,但是还优于他们每一个命令。

在同步备份数据时,默认情况下,rsync通过其独特的“quick check” 算法,它仅同步大小或者最好修改时间发生变化的文件或目录,当然也可根据权限,属主等熟悉的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。

提示:传统的cpscp工具拷贝每次均为完整的拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝的功能,因此,从同步数据的性能及效率上,rsync工具更胜一筹。

CentOS5rsync2.x比对方法,把所以的文件对比一遍,然后进行同步

CentOS6rsync3.x比对方法,一遍比对差异,一边对差异的部分进行同步

1.3 rsync的特性

rsync的特性如下:

支持拷贝特殊文件如链接文件,设备等

可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能

可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p

可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高,tar –N

可以使用rcprshssh等方式来配合传输文件(rsync本身不对数据加密)

可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****

支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像

第2章 rsync的企业工作场景说明

2.1 定时同步

两台服务器之间数据同步(定时任务)

cron+rsync

wKioL1ceMB2BLvwWAABclvnwNGE302.png

2.2 实时同步

sersync或者(inotify+rsync

十、全网服务器数据备份解决方案提出及负责实施 200x.03 – 200x.09
1.针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。
2.通过本地打包备份,然后rsync结合inotify应用把全网数据统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果。
3.定期将IDC机房的数据备份公司的内部不服务器,防止机房地震及火灾问题导致数据丢失。

 

成功永远比别人多做一点点! 早做一点点 ! ---老男孩

第3章 rsync的工作方式

一般来说,rsync大致使用三种主要的传输数据的方式。分别为:

单个主机本地之间的数据传输(此时类似于cp命令的功能)

借助rcpssh等通道来传输数据(此时类似于scp命令的功能)

以守护进程(socket)的方式传输数据(这个是rsync自身的重要的功能)

以上的几种rsync的工作方式,我们可以通过man rsync帮助或者查看官方的手册获得:

3.1 local

Local:  rsync[OPTION...] SRC... [DEST]

[root@nfs01 tmp]# rsync -avz /etc/hosts /tmp/

sending incremental file list

hosts

 

sent 200 bytes  received 31bytes  462.00 bytes/sec

total size is 349  speedup is1.51

[root@nfs01 tmp]# ls /tmp/

hosts

=============================================================

[root@nfs01 tmp]# mkdir /data

[root@nfs01 tmp]# rsync -avz --delete /data/ /tmp/使/tmp目录和/data目录一致

sending incremental file list

./

deleting data/

deleting .ICE-unix/

deleting hosts

deleting 9

deleting 8

deleting 7

deleting 6

deleting 5

deleting 4

deleting 3

deleting 2

deleting 10

deleting 1

sent 29 bytes  received 15bytes  88.00 bytes/sec

total size is 0  speedup is0.00

 

 

3.2 Access via remote shell:

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

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

[root@nfs01 tmp]# ls

1  10  2 3  4  5  6  7 8  9  data

[root@nfs01 tmp]# rsync -avz -e 'ssh -p 52113' /tmp/ root@10.0.0.41:/tmp/

The authenticity of host '[10.0.0.41]:52113 ([10.0.0.41]:52113)'can't be established.

RSA key fingerprint is79:7b:02:4b:6e:fe:c8:d0:b4:cc:b2:27:35:8f:9f:ea.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '[10.0.0.41]:52113' (RSA) to the list ofknown hosts.

reverse mapping checking getaddrinfo for bogon [10.0.0.41] failed -POSSIBLE BREAK-IN ATTEMPT!

root@10.0.0.41's password:

sending incremental file list

./

1

10

2

3

4

5

6

7

8

9

data/

 

sent 494 bytes  received 209bytes  18.26 bytes/sec

total size is 0  speedup is0.00

[root@backup ~]# ls /tmp/

1  10  2 3  4  5  6  7 8  9  data

拉取实例语法:

rsync -avz  -e 'ssh -p 22' oldboy@10.0.0.41:/tmp/ /tmp/

推送实例语法

rsync -avz  -e 'ssh -p 52113' /tmp/ oldboy@172.16.1.41:/tmp/

提示:注意用户权限

上面例子中,oldboy需要对/tmp有相应的权限,否则无法同步

特别提示:

有斜线的话表示只将目录下面的内容传送过去

没有斜线的话表示传送目录下面的内容和目录本身

 

 

3.3 Access via rsync 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

Usages with just one SRC arg and no DEST arg willlist the source files instead of copying.

wKioL1ceMAfj9W7IAABY_9Nmfgs231.png

daemon模式第一种推拉方法(常用)

rsync  [option] SRC….   [user@]HOST::DEST

rsync –avz /backup/  rsync_backup@172.16.1.41::backup--password-file=/etc/rsync.password

rsync  -avz rsync backup@172.16.1.41::backup /backup/  --password-file=/etc/rsync.password

daemon模式第二种推拉方法

rsync[option]  SRC… rsync://[user@]HOST/DEST

rsync  -avz /backup/ rsync://rsync_backup@172.16.1.41/backup –password-file=/etc/rsync.password

rsync  -avz rsync://rsync_backup@172.16.1.141/backup /backup/ --password-file=/etc/password

 

wKioL1ceL_WQEb86AACABEbkoAg509.png

第4章 rsyncda emon配置

4.1 第一步

检查环境

[root@oldboy ~]# uname -r

2.6.32-573.el6.x86_64

[root@oldboy ~]# rpm -qa rsync

rsync-3.0.6-12.el6.x86_64

 

服务端ip

[root@oldboy ~]# ifconfig eth0|head -2

eth0      Link encap:Ethernet  HWaddr 00:0C:29:0E:3A:30 

          inetaddr:192.168.10.14 Bcast:192.168.10.255 Mask:255.255.255.0

 

客户端ip

[root@oldboy ~]# ip r|head -1

192.168.10.0/24 dev bond0 proto kernel  scope link  src 192.168.10.100

 

4.2 第二步,创建rsync专用系统账户

[root@oldboy ~]# useradd -M -s /sbin/nologin rsync

[root@oldboy ~]# grep "rsync" /etc/passwd               

rsync:x:501:501::/home/rsync:/sbin/nologin

 

4.3 第三步,创建rsync专用目录

[root@oldboy ~]# mkdir /backup

[root@oldboy ~]# chown -R rsync:rsync /backup

[root@oldboy ~]# ll -d /backup

drwxr-xr-x 2 rsync rsync 4096 4月  18 10:39 /backup

 

4.4 第四步,创建配置文件

[root@oldboy ~]# cat /etc/rsyncd.conf

sync server

#created by lx 14:18 2015-6-18

##rsyncd.conf start##

uid = rsync

gid = rsync

use chroot = no

max connections = 2000

timeout = 600

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

ignore errors

read only = false

list = false

hosts allow = 192.168.10.0/24

#hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

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

[backup]

comment = back server by lx 14:18 2015-6-18

path = /backup

 

4.5 第五步,创建密码配置文件

注,与/etc/rsyncd.conf配置文件中相互对应

[root@oldboy ~]# echo "rsync_backup:oldboy">/etc/rsync.password

[root@oldboy ~]# cat /etc/rsync.password

rsync_backup:oldboy

[root@oldboy ~]# chmod 600 /etc/rsync.password

[root@oldboy ~]# ll /etc/rsync.password

-rw------- 1 root root 20 4月  18 10:46 /etc/rsync.password

 

 

4.6 第六步,启动rsync daemon模式

[root@oldboy ~]# rsync --daemon

[root@oldboy ~]# lsof -i :873

COMMAND  PID USER   FD  TYPE DEVICE SIZE/OFF NODE NAME

rsync   2020 root    3u IPv4  12886      0t0 TCP *:rsync (LISTEN)

rsync   2020 root    5u IPv6  12887      0t0 TCP *:rsync (LISTEN)

 

[root@oldboy ~]# netstat -lntup|grep -w "873"

tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      2020/rsync         

tcp        0      0 :::873                      :::*                        LISTEN      2020/rsync

 

以上都是服务端配置部分

 

客户端配置部分

[root@oldboy ~]# echo "oldboy" >/etc/rsync.password

[root@oldboy ~]# cat /etc/rsync.password          

oldboy

检验结果

在客户端批量创建10个文件

[root@oldboy ~]# touch /tmp/stu{01..10}

[root@oldboy ~]# ll /tmp/             

总用量 40

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu01

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu02

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu03

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu04

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu05

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu06

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu07

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu08

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu09

-rw-r--r-- 1 nginx nginx 7 4月  18 10:55 stu10

 

同时查看服务端目录

[root@oldboy ~]# ll /backup/

总用量 0

 

4.7 第七步,检验

在客户端执行以下命令

[root@oldboy ~]# rsync -avz /tmp rsync_backup@192.168.10.14::backup--password-file=/etc/rsync.password

sending incremental file list

tmp/

tmp/stu01

tmp/stu02

tmp/stu03

tmp/stu04

tmp/stu05

tmp/stu06

tmp/stu07

tmp/stu08

tmp/stu09

tmp/stu10

tmp/.ICE-unix/

 

sent 646 bytes  received 206bytes  81.14 bytes/sec

total size is 70  speedup is0.08

 

在服务端再次查看目录

[root@oldboy ~]# ll -R /backup/

/backup/:

总用量 4

drwxr-xr-x 3 rsync rsync 4096 4月  18 10:31 tmp

 

/backup/tmp:

总用量 40

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu01

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu02

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu03

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu04

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu05

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu06

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu07

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu08

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu09

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu10

 

 

特别注意:

客户端的目录后最好加上/

[root@oldboy ~]# rsync -avz /tmp/ rsync_backup@192.168.10.14::backup--password-file=/etc/rsync.password

sending incremental file list

./

stu01

stu02

stu03

stu04

stu05

stu06

stu07

stu08

stu09

stu10

.ICE-unix/

 

sent 636 bytes  received 205bytes  80.10 bytes/sec

total size is 70  speedup is0.08

 

查看服务端目录

[root@oldboy ~]# ll  /backup/ 

总用量 40

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu01

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu02

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu03

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu04

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu05

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu06

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu07

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu08

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu09

-rw-r--r-- 1 rsync rsync 7 4月  18 10:55 stu10

 

-v, --verbose               increase verbosity

-q, --quiet                 suppress non-error messages

-a, --archive               archive mode; equals -rlptgoD(no -H,-A,-X)

-r, --recursive             recurse into directories  递归

-t, --times                 preserve modification times保持时间

-o, --owner                 preserve owner (super-useronly) 保持属主

-p, --perms                 preserve permissions 保持权限

-g, --group                 preserve group 保持用户组

-P                        same as --partial–progress 

              --progress          show progress during transfer

              --partial            keep partially transferred files

-D                     same as --devices--specials

      --devices     preserve device files (super-user only)

        --specials      preserve special files

-l, --links                copy symlinks as symlinks

4.8三种杀死进程的方法

第一种:kill `cat/var/run/rsyncd.pid`

第二种:pkill  rsync

第三种:killall  rsync

4.9rsync-daemon:排除文件

[root@backup backup]# ls

1  10  2 3  4  5  6  7 8  9  anaconda-ks.cfg  data install.log  install.log.syslog

排除多个有规律文件:

[root@nfs01 tmp]# rsync -avzrsync_backup@172.16.1.41::backup /tmp/  --password-file=/etc/rsync.password--exclude={1..10}

receiving incremental file list

./

anaconda-ks.cfg

install.log

install.log.syslog

data/

 

sent 201 bytes received 7608 bytes  5206.00bytes/sec

total size is 38451 speedup is 4.92

[root@nfs01 tmp]# ls

anaconda-ks.cfg data  install.log  install.log.syslog

排除单个文件:

[root@nfs01 tmp]# rsync -avzrsync_backup@172.16.1.41::backup /tmp/ --password-file=/etc/rsync.password --exclude=1

receiving incremental file list

./

10

2

3

4

5

6

7

8

9

anaconda-ks.cfg

install.log

install.log.syslog

data/

 

sent 308 bytes received 8033 bytes  5560.67bytes/sec

total size is 38451 speedup is 4.61

[root@nfs01 tmp]# ls

10  2  3 4  5  6  7  8 9  anaconda-ks.cfg  data install.log  install.log.syslog

排除多个无规律文件:

[root@nfs01 tmp]# rsync -avzrsync_backup@172.16.1.41::backup /tmp/ --password-file=/etc/rsync.password --exclude-from=../paichu.log

receiving incremental file list

./

1

10

2

3

4

5

6

7

8

9

install.log.syslog

 

sent 326 bytes received 1761 bytes  4174.00bytes/sec

total size is 15139 speedup is 7.25

[root@nfs01 tmp]# ls

1  10  2 3  4  5  6  7 8  9  install.log.syslog

[root@nfs01 tmp]# cat ../paichu.log

data

install.log

anaconda-ks.cfg

注意:拉取和推送都可以。

也可以服务端排除,配置文件里参数

exclude=12 3 4

第5章 rsync的优缺点

5.1rsync的优点

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

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

5.2  rsync的缺点

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

2、同步大文件,10G这样的文件有时候会出错,中断。未完整同步前,是隐藏文件。

第6章 rsync限速

6.1scp限速100KB/s

[root@oldboy backup]# ls

02 03  04  05 06  07  08 09  10  back

[root@oldboy backup]# scp -P 22 -l 1000/backup/back root@172.16.1.41:/tmp

back                                             2% 2352KB 119.6KB/s   13:56ETA^CKilled by signal 2.

[root@oldboy backup]# scp -P 22 -l 100000/backup/back root@172.16.1.41:/tmp

back                                            50%   50MB   8.4MB/s  00:05 ETA^CKilled by signal 2.

此时的传输速率1000==120KB/s,100000===10MB/s

 

6.2rsync限速1024KB/s

       rsync–auvzP  --bwlimit=1本地文件远程文件,默认速度MB/s

[root@oldboy backup]# rsync -avzP--bwlimit=1 /backup/ rsync_backup@172.16.1.41::backup/--password-file=/etc/rsync.password                                        sendingincremental file list

./

back

 29589504 28% 1021.66kB/s    0:01:13

已传大小进度速度                 剩余时间