inotify+rsync+sersync实时数据备份

第1章 rsync备份服务

1.1 rsync软件介绍

rsync软件官方链接地址:http://www.samba.org/ftp/rsync/rsync.html

提示信息:

man rsync查看客户端说明信息

man rsyncd.conf查看服务端配置

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具

全量:将全部数据,进行传输覆盖

cp mv scp

增量:只传输差异部分的数据

rsync

rstync适用于unix/linux/windows等多种操作系统平台

nfs(客户端)   (拉)<—— rsync (软件)——>(推)     backup(服务端)

1.2 rsync软件功能

1.2.1 类似于cp命令---(本地备份传输数据)

[[email protected] ~]# rsync /etc/hosts /tmp/

[[email protected] ~]# ls /tmp/hosts

/tmp/hosts

总结说明:利用rsync命令在备份数据目录时

备份数据的目录后面有/       类似这样形式old_dir/      表示old_dir目录下的内容进行复制

备份数据的目录后面没有/     类似这样形式old_dir       表示old_dir目录下的内容以及目录本身进行复制

1.2.2 类似于scp命令---(远程备份传输数据)

[[email protected] ~]# rsync -rv /old_dir/ 10.0.0.31:/tmp/

[email protected]'s password:

sending incremental file list

a

b

c

d

e

sent 253 bytes  received 107 bytes  102.86 bytes/sec

total size is 0  speedup is 0.00

[[email protected] ~]# rsync -rv /old_dir 10.0.0.31:/tmp/

[email protected]'s password:

sending incremental file list

old_dir/

old_dir/a

old_dir/b

old_dir/c

old_dir/d

old_dir/e

sent 279 bytes  received 111 bytes  111.43 bytes/sec

total size is 0  speedup is 0.00

1.2.3 类似于rm命令--- (实现无差异同步备份)

[[email protected] tmp]# rsync -r --delete /null/  /old01/

[[email protected] tmp]# ll /old01/

total 0

说明:rsync命令清空目录等内容或者清空文件内容效率比rm命令要高

1.2.4 类似于ls命令 --- (本地文件信息查看)

[[email protected] tmp]# rsync /etc/hosts

-rw-r--r--         371 2017/10/10 15:45:09 hosts

1.3 rsync实现增量复制的原理

Rsync通过其独特的“quick check”算法,实现增量传输数据

官方增量传输算法说明:

Rsync finds files that need to be transferred using a “quick check” algorithm (by default) that looks

for files that have changed in size or in last-modified time.  Any changes  in  the  other  preserved

attributes  (as  requested by options) are made on the destination file directly when the quick check

indicates that the file’s data does not need to be updated.

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

1.4 rsync的7个特性说明

01. 支持拷贝普通文件与特殊文件如链接文件,设备等。

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

#tar zcvf backup_1.tar.gz  /opt/data  -exclude=old

说明:在打包/opt/data时就排除了old命名的目录和文件。

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

04. 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)。

# 将备份/home 目录自 2008-01-29 以来修改过的文件

# tar -N 2008-01-29 -zcvf /backups/inc-backup_$(date +%F).tar.gz /home

# 将备份 /home 目录昨天以来修改过的文件

# tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F).tar.gz /home

# 添加文件到已经打包的文件

# tar -rf all.tar *.gif    ###此命令目前实测效果不理想

说明:这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

05. 可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)

06. 可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****。重点掌握

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

1.5 rsync工作原理

1.6 rsync软件工作方式

SYNOPSIS

本地数据同步方式

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

远程数据同步方式:

Access via remote shell:

Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]

Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

守护进程方式数据同步:

Access via rsync daemon:

Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]

rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]

Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST

rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST

1.6.1 本地数据同步方式(类似于cp

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

rsync         -- 数据同步命令

[OPTION...]   -- rsync命令参数信息

SRC           -- 要同不得数据信息(文件或目录)

[DEST]        -- 将数据传输到什么位置

实例演示命令:

[[email protected] test]# ll

total 4

drwxr-xr-x 2 root root 4096 Jun 29 23:21 ceshi

-rw-r--r-- 1 root root    0 Jun 29 23:21 test.txt

[[email protected] test]# rsync test.txt  ceshi/

[[email protected] test]# ll ceshi

total 0

-rw-r--r-- 1 root root 0 Jun 29 23:22 test.txt

1.6.2 远程数据同步方式(类似scp)---又称为隧道传输

Access via remote shell:

Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]

Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

说明:需要进行交互传输数据。如果想实现免交互传输数据,需要借助ssh+key方式实现:

1.6.2.1 push:推

SRC:        本地要怼过去的数据信息

DEST         怼到远端什么位置

实践操作:push

Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

服务端推:

[[email protected] ~]# ll /tmp

total 0

-rw-r--r-- 1 root root 0 Jun 29 23:39 test.txt

[[email protected] ~]# rsync -r /tmp 10.0.0.31:/test/

[email protected]'s password:##123456

[[email protected] ~]#

客户端查看:

[[email protected] ~]# ll /test

total 4

drwxr-xr-x 3 root root 4096 Jun 29 23:52 tmp

服务端推:

[[email protected] ~]# rsync -r /tmp/ 10.0.0.31:/test/

[email protected]'s password:

客户端查看:

[[email protected] ~]# ll /test

total 0

-rw-r--r-- 1 root root 0 Jun 29 23:53 test.txt

说明:/tmp   -- 表示将tmp目录下面数据内容及目录本身都进行传输

/tmp/  -- 表示只传输tmp目录下面的内容信息

远程隧道加密传输方式

[[email protected] tmp]# rsync -vzrtopgP  -e 'ssh -p 22' [email protected]:/tmp/ /tmp/

[[email protected] tmp]# rsync -vzrtopgP  -e 'ssh -p 22' /tmp/  [email protected]:/tmp

1.6.2.2 pull:拉

Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]

[[email protected]] :  以什么用户身份传输数据信息

HOST:        远程主机信息(IP地址信息 主机名称信息)

SRC:          远端要恏过来的数据信息

[dest]        恏到本地什么位置

将nfs01服务器作为本地,要获取rsync服务器上的数据,自然就成拉的概念了

[[email protected] ~]$ rsync -rv [email protected]:/tmp /tmp/

[email protected]'s password:

receiving incremental file list

tmp/

tmp/a

tmp/b

tmp/c

tmp/d

tmp/e

rsync: send_files failed to open "/tmp/yum.log": Permission denied (13)

tmp/.ICE-unix/

tmp/

sent 137 bytes  received 459 bytes  170.29 bytes/sec

total size is 0  speedup is 0.00

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

[[email protected] ~]$ ls  /tmp/

tmp

1.6.3 守护进程方式数据同步:(面向交互传输同步传输数据)

Access via rsync daemon:

Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]

rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]

Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST

rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST

1.7 rsync软件在企业中的应用场景

01. 两台服务器之间数据同步(定时任务cron+rsync)

同步网站内部人员数据信息(定时任务最小周期为1分钟)

一般是网站内部人员存储的数据信息,用定时同步

02. 两台服务器之间数据同步(实时任务inotify/sersync/lrsyncd+rsync)

同步网站用户人员数据信息

一般是网站外部人员存储的数据信息,用实时同步

1.8 rsync守护进程模式部署

规划:#配置rsync守护进程方式(需要有服务端与客户端)

01. backup服务器作为rsync服务端

02.以rsync客户端服务器作为参照服务器,将数据推到rsync服务端

1.8.1 第一部分:配置rsync服务端(将服务端配置到backup服务器上)

第一个里程碑:软件是否存在

[[email protected] ~]# rpm -qa|grep rsync

rsync-3.0.6-12.el6.x86_64

第二个里程碑:进行软件服务配置

vim /etc/rsyncd.conf  (默认没有这个配置文件)

cat >/etc/rsyncd.conf<<EOF

#rsync_config

#created by baoge at 2017

##rsyncd.conf start##

uid = 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

[backup]

comment = "backup dir by baoge"

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

EOF

配置文件说明

###以上为配置文件的描述信息

#rsync_config

#created by baoge at 2017

##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

##日志文件 显示出错信息等

###配置文件模块配置

[backup]                             ##模块名称

comment = "backup dir by baoge"  ##描述信息

path = /backup                      ##模块对应的位置

ignore errors                        ##忽略错误程序

read only = false                    ##是否只读

list = false                           ##是否可以列表

hosts allow = 172.16.1.0/24         ##准许访问rsync服务器的范围(白名单)

hosts deny = 0.0.0.0/32             ##禁止访问rsync服务器的范围(黑名单)

auth users = rsync_backup          ##不存在的用户,只用于认证(开门)

secrets file = /etc/rsync.password   ##不存在的用户进行认证时的密钥文件

第三个里程碑:创建rsync服务管理用户

[[email protected] ~]# useradd -s /sbin/nologin -M rsync

[[email protected] ~]# id  rsync

uid=501(rsync) gid=501(rsync) groups=501(rsync)

第四个里程碑:创建数据备份存储目录

mkdir -p /backup

chown -R rsync.rsync /backup/

第五个里程碑:创建认证用户密码文件

[[email protected] ~]# echo "rsync_backup:test123"  >/etc/rsync.password

[[email protected] ~]# chmod 600 /etc/rsync.password

[[email protected] ~]# cat  /etc/rsync.password

rsync_backup:test123

[[email protected] ~]# ll /etc/rsync.password

-rw------- 1 root root 23 Nov 28 11:24 /etc/rsync.password

第六个里程碑:启动rsync服务

[[email protected] ~]# rsync --daemon

[[email protected] ~]# ps -ef|grep rsync

root      25120      1  0 11:27 ?        00:00:00 rsync --daemon

root      25122  24773  0 11:27 pts/1    00:00:00 grep rsync

[[email protected] ~]# netstat -lntup|grep rsync  ##查看服务端口

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

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

至此:服务端配置完成

客户端进行推送数据测试

[[email protected] ~]# rsync -avz /etc/hosts [email protected]::backup

Password:

sending incremental file list

hosts

sent 201 bytes  received 27 bytes  11.69 bytes/sec

total size is 371  speedup is 1.63

服务端查看:

[[email protected] ~]# ls /backup

hosts

1.8.2 第二部分:配置rsync客户端

架构中其他服务器称为rsync客户端

第一个里程碑:软件是否存在

[[email protected] ~]# rpm -qa|grep rsync

rsync-3.0.6-12.el6.x86_64

第二个里程碑:建立认证文件

[[email protected] ~]# echo "test123"  >/etc/rsync.password

[[email protected] ~]# chmod 600 /etc/rsync.password

测试:

[[email protected] baoge_rsync]# touch {a,b,c}.txt

[[email protected] baoge_rsync]# ll

total 0

-rw-r--r-- 1 root root 0 Jun 29 17:39 a.txt

-rw-r--r-- 1 root root 0 Jun 29 17:39 b.txt

-rw-r--r-- 1 root root 0 Jun 29 17:39 c.txt

[[email protected] baoge_rsync]# rsync -avz /baoge_rsync/{a,b,c}.txt  [email protected]::backup --password-file=/etc/rsync.password

password file must not be other-accessible

continuing without password file

Password:

sending incremental file list

a.txt

b.txt

c.txt

sent 154 bytes  received 65 bytes  16.22 bytes/sec

total size is 0  speedup is 0.00

[[email protected] backup]# ll

total 0

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:39 a.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:39 b.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:39 c.txt

数据推送正常

免交互式推送数据(设置环境变量)

[[email protected] ~]# export RSYNC_PASSWORD=test123       ###临时

echo  'export RSYNC_PASSWORD=test123' >>/etc/profile   ##永久

[[email protected] backup]# ll

total 0

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:47 1.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:47 2.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:47 3.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:39 a.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:39 b.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:39 c.txt

第三个里程碑:测试传输

守护进程方式推拉

Access via rsync daemon:

(拉)Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]

rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]

(推)Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST

rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST

交互式:rsync -avz /etc/hosts  [email protected]::backup

非交互式:rsync -avz /etc/hosts  [email protected]::backup --password-file=/etc/rsync.password

实践测试:

推:

[[email protected] ~]# rsync -avz /tmp/push.txt [email protected]::backup

sending incremental file list

push.txt

sent 65 bytes  received 27 bytes  184.00 bytes/sec

total size is 0  speedup is 0.00

对端查看:

[[email protected] backup]# ll

total 0

-rw-r--r-- 1 rsync rsync 0 Jun 30 12:39 push.txt

-rw-r--r-- 1 root  root  0 Jun 30 12:22 rsynctest.txt

拉:

[[email protected] ~]# rsync -avz [email protected]::backup/rsynctest.txt /tmp

receiving incremental file list

rsynctest.txt

sent 83 bytes  received 142 bytes  450.00 bytes/sec

total size is 0  speedup is 0.00

[[email protected] ~]# ll /tmp

total 0

-rw-r--r-- 1 root root 0 Jun 30 12:22 rsynctest.txt

##常见问题:

[[email protected] tmp]# rsync -avz /etc/hosts  [email protected]::backup

Password:

sending incremental file list

hosts

rsync: mkstemp ".hosts.U5OCyR" (in backup) failed: Permission denied (13)

sent 200 bytes  received 27 bytes  13.76 bytes/sec

total size is 371  speedup is 1.63

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

说明:备份目录权限设置不正确

1.8.3 第三部分:rsync服务的重启—kill

1.     kill 进程pid

kill -9 强制杀死

说明:需要知道进程号信息,且进程杀死后会有说明信息

2.killall 进程名

说明:进程杀死后有提示说明

3.pkill 进程名(模糊杀死)

说明:进程杀死后没有提示说明

1.9 rsync参数


命令参数


参数说明


-v,--verbose


详细模式输出,传输时的进度等信息


-z,--compress


传输时进行压缩以提高传输效率,--compress可以按级别压缩。局域网可以不用压缩


-a,--archive重要


归档模式,表示以递归方式传输文件,并保持所有文静属性,等于-rtopgDl


-r,--recursive   归类于-a


对子目录以递归模式,即目录下的所有目录都同样传输


-t,--times    归类于-a


保持文件时间信息


-o,--owner   归类于-a


保持文件属主信息


-p,--perms   归类于-a


保持文件权限


-g,--group   归类于-a


保持文件属组信息


-D,--devices 归类于-a


保持设备文件信息


-l,--links    归类于-a


保留软链接(小写L)


-P,--progress


显示等信息过同步的过程及传输时的进度


-e


使用的信道协议(remote   shell),指定替代rsh的shell程序

例如:ssh


-exclude=PATTENRN


指定排除不需要传输的文件信息(类似于tar中)


--exclude-from=file


文件所在的目录,即可以实现排除多个文件(类似于tar中)


--bwlimit=RATE


传输文件时限速

limit I/O   bandwidth;KBbytes per cecond

limit socket I/O   bandwidth限速功能

案例:某DBA做数据同步,带宽占满,导致用户无法访问网站


--delete


让目标目论SRC和源目录DST一致,即无差异同步数据


注:

保持同步目录以及文件属性:

这里的-avzP相当于-vzrtopgDlP(还多了Dl功能),生产环境常用的参数选项为-avzP或-vzrtopgP

如果放入脚本中,也可以把-v和-P去掉。这里的--progress可以用 -P代替

提示信息:

以上参数还可以使用man rsync或者参考资料地址。

thhp://www.samba.org/ftp/rsync/rsync.html OPTIONS SUMMARY节

生产参数:-avz或者-vzrtopg

更多参数:http://www.samba.org/ftp/rsync/rsync.html

1.9.1 案例:某DBA做数据同步,带宽占满,导致用户无法访问网站

1.10 利用xinetd超级守护进程启动rsync服务

第一个里程碑:安装xinetd服务

yum install -y xinetd

第二个里程碑:让rsync服务可以被xinetd服务所管理

[[email protected] xinetd.d]# vim /etc/xinetd.d/rsync

# default: off

# description: The rsync server is a good addition to an ftp server, as it \

#     allows crc checksumming etc.

service rsync

{

disable  = no                 <-- 把默认yes修改为no

flags             = IPv6

socket_type     = stream

wait            = no

user            = root

server          = /usr/bin/rsync

server_args     = --daemon

log_on_failure  += USERID

}

第三个里程碑:停止rsync服务,利用xinetd服务重启启动

[[email protected] ~]# killall rsync

[[email protected] ~]# /etc/init.d/xinetd start

Starting xinetd:                                           [  OK  ]

[[email protected] ~]# netstat -lntup|grep 873

tcp        0      0 :::873                      :::*                        LISTEN      4833/xinetd

第四个里程碑:客户端进行测试

[[email protected] ~]# rsync -av /etc/hosts [email protected]::backup

sending incremental file list

sent 26 bytes  received 8 bytes  68.00 bytes/sec

total size is 378  speedup is 11.12

1.11 rsync服务的扩展功能

1.11.1 设置rsync软件开机启动(仅服务端)

1.     配置/etc/rc.local文件

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

2.     配置/etc/init.d/目录(需要自己编写启动脚本)

3.     xinetd服务启动rsync

1.11.2 守护进程多模块功能配置

第一个里程碑:编写配置文件添加多模块

[[email protected] ~]# cat  /etc/rsyncd.conf

#rsync_config

#created by baoge at 2017

##rsyncd.conf start##

uid = 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

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

[backup]

comment = "backup dir by baoge"

path = /backup

[backup_dev]

comment = "backup dir by Baohong"

path = /backup_dev

第二个里程碑:重启rsync服务

killall rsync

rsync --daemon

创建新模块的备份目录

mkdir -p /backup_dev

chown -R rsync.rsync /backup_dev/

实践测试

[[email protected] ~]# rsync -avz /etc/hosts  [email protected]::backup_dev --password-file=/etc/rsync.password

sending incremental file list

hosts

sent 201 bytes  received 27 bytes  456.00 bytes/sec

total size is 371  speedup is 1.63

[[email protected] ~]# ls /backup_dev

hosts

[[email protected] ~]# rsync -avz /etc  [email protected]::backup_dev

[[email protected] ~]# ll /backup_dev/

total 8

drwxr-xr-x 79 rsync rsync 4096 Jun 29 17:25 etc

-rw-r--r--  1 rsync rsync  337 Jun 28 01:38 hosts

1.11.3 rsync排除功能实践

创建模拟环境

[[email protected] ~]# mkdir -p /paichu

[[email protected] ~]# mkdir  /paichu/{a..d}

[[email protected] ~]# touch  /paichu/{a..d}/{1..4}

[[email protected] ~]# tree  /paichu

/paichu

├── a

│   ├── 1

│   ├── 2

│   ├── 3

│   └── 4

├── b

│   ├── 1

│   ├── 2

│   ├── 3

│   └── 4

├── c

│   ├── 1

│   ├── 2

│   ├── 3

│   └── 4

└── d

├── 1

├── 2

├── 3

└── 4

4 directories, 16 files

法一:

[[email protected] ~]# cd   /paichu

[[email protected] paichu]#

[[email protected] paichu]# ll

total 16

drwxr-xr-x 2 root root 4096 Jun 30 14:57 a

drwxr-xr-x 2 root root 4096 Jun 30 14:57 b

drwxr-xr-x 2 root root 4096 Jun 30 14:57 c

drwxr-xr-x 2 root root 4096 Jun 30 14:57 d

rsync -av --exclude=a --exclude=b --exclude=d/4 /paichu/ [email protected]::backup_dev

[[email protected] paichu]# rsync -av --exclude=a --exclude=b --exclude=d/4 /paichu/ [email protected]::backup_dev

sending incremental file list

./

c/

c/1

c/2

c/3

c/4

d/

d/1

d/2

d/3

sent 387 bytes  received 152 bytes  1078.00 bytes/sec

total size is 0  speedup is 0.00

服务端查看:

[[email protected] ~]# ll /backup_dev

total 8

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 c

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 d

[[email protected] ~]# tree /backup_dev

/backup_dev

├── c

│   ├── 1

│   ├── 2

│   ├── 3

│   └── 4

└── d

├── 1

├── 2

└── 3

2 directories, 7 files

法二:

事先编写排除文件

[[email protected] paichu]# cat exclude.txt  -A

c$

d$

a/1$

exclude.txt$

注意:编辑排除文件的时候,只能一行写一个文件或目录,且每行行尾不能有空格

推送数据测试:

[[email protected] paichu]# rsync -av  --exclude-from=exclude.txt /paichu/ [email protected]::backup_dev

sending incremental file list

./

a/

a/2

a/3

a/4

b/

b/1

b/2

b/3

b/4

sent 387 bytes  received 152 bytes  1078.00 bytes/sec

total size is 0  speedup is 0.00

服务端查看

[[email protected] ~]# rm -rf /backup_dev/*

[[email protected] ~]# ll /backup_dev

total 0

[[email protected] ~]# ll /backup_dev

total 8

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 a

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 b

[[email protected] ~]# tree /backup_dev

/backup_dev

├── a

│   ├── 2

│   ├── 3

│   └── 4

└── b

├── 1

├── 2

├── 3

└── 4

2 directories, 7 files

##可以不用事先在服务端创建备份目录 但是不可以创建多级目录

服务端也可以/etc/rsyncd.conf里配置排除

1.11.4 分类备份

o  备份时针对不同的人员将数据分别备份至期对应目录下的实践:

人员身份:            分类备份目录

运维                   sa

开发                   dev

DBA                    dba

要求说明:

1.将/fenlei/a目录备份至运维备份目录/backup/sa下

2.将/fenlei/b目录备份至开发备份目录/backup/dev下

3.将/fenlei/c目录备份至DBA备份目录/backup/dba下

实践操作:

服务端:

[[email protected] backup]# ll

total 0

[[email protected] backup]#

客户端:

[[email protected] fenlei]# ll

total 12

drwxr-xr-x 2 root root 4096 Jun 30 14:57 a

drwxr-xr-x 2 root root 4096 Jun 30 14:57 b

drwxr-xr-x 2 root root 4096 Jun 30 14:57 c

运维人员数据备份

[[email protected] fenlei]# rsync -av /fenlei/a [email protected]::backup/sa

sending incremental file list

created directory sa

a/

a/1

a/2

a/3

a/4

sent 222 bytes  received 88 bytes  620.00 bytes/sec

total size is 0  speedup is 0.00

开发人员数据备份

[[email protected] fenlei]# rsync -av /fenlei/b [email protected]::backup/dev

sending incremental file list

created directory dev

b/

b/1

b/2

b/3

b/4

sent 222 bytes  received 88 bytes  620.00 bytes/sec

total size is 0  speedup is 0.00

DBA人员数据备份

[[email protected] fenlei]# rsync -av /fenlei/c [email protected]::backup/dba

sending incremental file list

created directory dba

c/

c/1

c/2

c/3

c/4

sent 222 bytes  received 88 bytes  620.00 bytes/sec

total size is 0  speedup is 0.00

服务端查看备份数据:

[[email protected] backup]# ll

total 12

drwxr-xr-x 3 rsync rsync 4096 Jun 30 16:37 dba

drwxr-xr-x 3 rsync rsync 4096 Jun 30 16:36 dev

drwxr-xr-x 3 rsync rsync 4096 Jun 30 16:36 sa

[[email protected] backup]# tree ./

./

├── dba

│   └── c

│       ├── 1

│       ├── 2

│       ├── 3

│       └── 4

├── dev

│   └── b

│       ├── 1

│       ├── 2

│       ├── 3

│       └── 4

└── sa

└── a

├── 1

├── 2

├── 3

└── 4

6 directories, 12 files

说明:在客户端做备份时,不必先在服务端创建对应下的目录,只需要在客户端备份命令的相应模块后面加上相应的目录名就行了

rsync -av /fenlei/b [email protected]::backup/dev

注意:这种方式只能创建一级目录,不能创建多级目录

1.11.5 守护进程的访问权限控制配置

hosts allow = 172.16.1.0/24  (只允许172.16.1.0/24这个网段的主机访问)

hosts deny = 0.0.0.0/32      (禁止0.0.0.0/32这个网段的主机访问)

因为0.0.0.0/32这个地址不存在,那么把黑名单转换成白名单,就是没有禁止访问的网段,所以它的权限大于白名单的权限

说明:白名单和黑名单同时存在是,权限为大着优先使用

实践证明:将nfs服务器/fenlei目录下的数据备份至rsync服务器的/backup目录下,走公网

设想:不能备份

###服务端:

###[[email protected] backup]# ll

###total 0

客户端备份

[[email protected] fenlei]# rsync -av /fenlei/ [email protected]::backup

sending incremental file list

./

a/

a/1

a/2

a/3

a/4

b/

b/1

b/2

b/3

b/4

c/

c/1

c/2

c/3

c/4

sent 631 bytes  received 251 bytes  1764.00 bytes/sec

total size is 0  speedup is 0.00

服务端查看:

[[email protected] backup]# ll

total 12

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 a

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 b

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 c

结论:白名单和黑名单同时存在是,权限为大着优先使用

o  设计只让内网地址为172.16.1.0/24这个网段的主机备份

hosts allow = 172.16.1.0/24

#hosts deny = 0.0.0.0/32

[[email protected] backup]# killall rsync

[[email protected] backup]# killall rsync

rsync: no process killed

[[email protected] backup]# rsync --daemon

[[email protected] backup]# ps -ef|grep [r]sync

root       1710      1  0 17:11 ?        00:00:00 rsync --daemon

[[email protected] backup]# netstat -lnupt|grep [r]sync

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

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

再次测试:

删除之前向服务端备份的数据:

[[email protected] backup]# rm -rf *

[[email protected] backup]# ll

total 0

客户端备份数据:

[[email protected] fenlei]# rsync -av /fenlei/ [email protected]::backup

@ERROR: Unknown module 'backup'

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

###可以发现已经有权限限制

客户端也没有新的备份数据

[[email protected] backup]# ll

total 0

1.11.6 守护进程无差异同步配置

首先确保,服务端与客户端数据信息一致

1.11.6.1          推方式

说明:客户端/fenlei目录与服务端/backup无差异同步

服务端数据查看

[[email protected] backup]# ll

total 4

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 a

客户端数据查看

[[email protected] fenlei]# ll

total 12

drwxr-xr-x 2 root root 4096 Jun 30 14:57 a

drwxr-xr-x 2 root root 4096 Jun 30 14:57 b

drwxr-xr-x 2 root root 4096 Jun 30 14:57 c

客户端执行无差异同步命令

[[email protected] fenlei]# rsync -avz --delete /fenlei/ [email protected]::backup

sending incremental file list

./

b/

b/1

b/2

b/3

b/4

c/

c/1

c/2

c/3

c/4

sent 452 bytes  received 172 bytes  1248.00 bytes/sec

total size is 0  speedup is 0.00

服务端再次查看数据,是否与客户端数据一致

[[email protected] backup]# ll

total 12

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 a

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 b

drwxr-xr-x 2 rsync rsync 4096 Jun 30 14:57 c

推方式数据无差异同步:本地没有的数据信息,远程服务端也不能有/ 本地有的数据信息,远程服务端也必须有

1.11.6.2          拉方式

服务端/backup_dev目录客户端/baoge_rsync目录与无差异同步

服务端数据查看

[[email protected] backup_dev]# ll

total 0

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:47 1.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:47 2.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:47 3.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:39 a.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:39 b.txt

-rw-r--r-- 1 rsync rsync 0 Jun 29 17:39 c.txt

客户端数据查看

[[email protected] baoge_rsync]# ll

total 0

-rw-r--r-- 1 root root 0 Jun 29 17:47 1.txt

-rw-r--r-- 1 root root 0 Jun 29 17:47 2.txt

-rw-r--r-- 1 root root 0 Jun 29 17:47 3.txt

客户端执行无差异同步命令

[[email protected] baoge_rsync]# rsync -avz --delete  [email protected]::backup_dev /baoge_rsync/

receiving incremental file list

./

a.txt

b.txt

c.txt

sent 137 bytes  received 309 bytes  892.00 bytes/sec

total size is 0  speedup is 0.00

客户端查看数据有没有同步

[[email protected]1 baoge_rsync]# ll

total 0

-rw-r--r-- 1 501 501 0 Jun 29 17:47 1.txt

-rw-r--r-- 1 501 501 0 Jun 29 17:47 2.txt

-rw-r--r-- 1 501 501 0 Jun 29 17:47 3.txt

-rw-r--r-- 1 501 501 0 Jun 29 17:39 a.txt

-rw-r--r-- 1 501 501 0 Jun 29 17:39 b.txt

-rw-r--r-- 1 501 501 0 Jun 29 17:39 c.txt

拉方式数据无差异同步:远端没有的数据信息,本地客户端也不能有/ 远端有的数据信息,本地客户端也必须有

注意:无差异同步数据备份功能慎用

此命令还有一个特殊用途:快速清空大文件

服务端大文件

[[email protected] backup_dev]# ll

total 4

-rw-r--r-- 1 root root 1275 Jun 30 20:59 big.txt

客户端执行无差异同步数据命令

客户端的空文件

[[email protected] baoge_rsync]# ll

total 0

-rw-r--r-- 1 root root 0 Jun 30 21:00 null.txt

[[email protected] baoge_rsync]# rsync -avz --delete /baoge_rsync/null.txt [email protected]::backup_dev/big.txt --password-file=/etc/rsync.passwordsending incremental file list

null.txt

sent 69 bytes  received 39 bytes  216.00 bytes/sec

total size is 0  speedup is 0.00

查看服务端大文件的大小

[[email protected] backup_dev]# ll

total 0

-rw-r--r-- 1 rsync rsync 0 Jun 30 21:00 big.txt

结论:已经快速清空了服务端大文件中的数据

1.11.7 守护进程的列表功能配置

rsync服务端配置文件中

list = false    --- 表示关闭显示模块信息列表功能

list = true     --- 表示开启显示模块信息列表功能

客户端查看模块信息命令

rsync [email protected]::

参数功能说明:再执行同步数据命令的时候会把服务端配置文件里面的所有模块信息显示出来,再无它用。

原文地址:http://blog.51cto.com/13131196/2135814

时间: 2024-10-07 06:36:44

inotify+rsync+sersync实时数据备份的相关文章

Rsync + sersync 实时同步备份

Rsync + sersync 实时同步备份 一      Rsync + Sersync  实时同步介绍 1.Rsync 服务搭建介绍 云机上搭建Rsync server,在本地搭建Rsync Clinet. 2. Sersync 服务搭建介绍 在本地服务器上搭建 Sersync  Server  检测本地的ftp目录变化,实时同步到云机上 二.Rsync编译安装 1.检查本机是否存在 [[email protected]云机 ~]# rpm -qa  rsync rsync-3.0.6-12

Rsync+Sersync实时数据同步

sersync实时数据同步 Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别? 1.Rsync+Inotify-tools (1):Inotify-tools只能记录下被监听的目录发生了变化(包括增加.删除.修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来: (2):rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此

rsync+sersync实现数据时时备份

CentOS6.6中rsync+sersync实现数据实时备份 注意:rsync的daemon模式已提前配置好了,只需要配置sersync即可 . 一.基本环境 系统版本 主机名 IP地址 角色 备份/监控目录 CentOS 6.6 backup 10.0.0.10 rsync服务端 /backup CentOS 6.6 nfs-server 10.0.0.7 rsync客户端 /data 二.sersync安装配置 查看系统是否支持inotify,显示以下三个文件表示支持 [[email pr

Linux下Rsync+sersync实现数据实时同步

inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个

Rsync+sersync实现数据实时同步

前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录. 二.Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别? 1.Rsync+Inotify-tools (1):Inotify-tools只能记录

Linux Debian8 Rsync+Sersync实现数据实时同步

Rsync+sersync实现数据实时同步Rsync??Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"Rsync算法"来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.Rsync的基本特点如下:?1.可以镜像保存整个目录树和文件系统:?2.可以很容易做到保持原来文件的权限.时间.软硬链接等:?3.无须特殊权限即可安装:?4.优

centos7服务搭建常用服务配置之二:Rsync+sersync实现数据实时同步

目录 1.RSYNC数据备份 1.1 rsync服务简介 1.2 rsync特点和优势 1.3 rysnc运行模式简介 1.4 数据同步方式 2 Rsync实验测试 2.1 实验环境说明 2.2 服务安装 2.3 Rsync命令详解 2.3 实验一使用rsync命令备份数据 2.4 实验二使用rsyncd服务进行数据备份 3.Rsync+sersync实现数据实时同步 3.1 rsync+sersync架构作用 3.2 rsync+inotify-tools与rsync+sersync架构的区别

Centos7.0系统下Rsync+sersync实现数据实时增量同步备份

前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录. 二.Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别? 1.Rsync+Inotify-tools (1):Inotify-tools只能记录

rsync+inotify实现全网自动化数据备份-技术流ken

1.rsync简介 "rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步" 2.rsync的功能和特点 1. 可以实现服务器各种资源的备份(可以夸文件系统) 2. linux-rsync,windows-cwrsync 3. 可以做全量备份,也可以做增量备份 4. 在做备份的时候,可以排除一些特定的文件不做备份 5. 可以结合ssh实现加密传输 6. rsync支持工作在后台的模式(