Rsync备份服务器

一个黄金爆头 2020-06-11

服务器 模块 配置 测试 同步 test file list

第一章、备份服务器介绍

rsync服务简介

Rsync同步原理:通过独特的quick check算法,根据文件大小、最后修改时间、权限、属主等属性的变化进行同步,

1、Rsync备份软件7大特性

①、支持拷贝普通文件与特殊文件,如连接文件,设备等

②、支持排除指定文件或目录同步的功能,类似tar命令排除功能

③、支持保持原文件或目录的所有属性信息不变

④、支持增量同步,提升数据传输效率

⑤、支持使用rcp、rsh、ssh等方式来配合进行隧道加密传输文件

⑥、支持使用socket(守护进程方式)传输文件或目录数据信息

⑦、支持用户任务方式传输数据,提升数据同步安全性。

2、Rsync命令参数:

a 归档模式,表示递归方式传输文件,并宝石所有文件属性 = rtopgDi

v 详细模块输出

z传输时进行压缩以提高效率

r 对子目录递归传输

t 保持文件时间属性信息

o 保持文件属主信息 g 保持文件属组信息 p 保持文件权限

D 保持设备文件信息 I (小写)保持软连接 P (大写)显示同步的过程及传输时的进度等

e 指定使用加密隧道传输,如ssh, (-e “ssh -p22”)

--exclude 排除不需要传输的文件 (排除单个)

--exclude-from 排除目录,可实现排除多个文件 (排除多个)

--bwlimit 限速传输,速率单位为kbytes(按照字节限速)

第二章、Rsync详解

1、服务特性:

是一款实现全量及增量、本地或远程数据同步备份的优秀工具

Rsync等价于cp、scp、rm、ls四种命令的集合

①、测试cp命令

[root@backup ~]# cp -a /etc/hosts /tmp

[root@backup ~]# ll /tmp/

-rw-r--r--. 1 root root 158 Jun 7 2013 hosts

[root@backup ~]# rsync -a /etc/hostname /tmp/

[root@backup ~]# ll /tmp

total 8

-rw-r--r-- 1 root root 7 Mar 10 13:12 hostname

-rw-r--r--. 1 root root 158 Jun 7 2013 hosts

②、测试scp命令

[root@backup ~]# scp -rp /tmp/ 10.14.21.2:/opt

root@10.14.21.2's password:

[root@backup ~]# rsync -rp /tmp/ 10.14.21.2:/opt #只同步目录下的内容

root@10.14.21.2's password:

[root@backup ~]# rsync -rp /tmp 10.14.21.2:/opt #同步目录及目录下的内容

root@10.14.21.2's password:

注意用rsync同步目录时,

/tmp 表示将目录及目录下面的内容进行同步

/tmp/ 表示将目录下面的内容进行同步,不包括目录本身

③、测试rm命令,

说明rsync实现删除目录中的数据时,原理是将一个空目录和目标目录进行同步

最终会将目录中的数据进行删除

[root@backup ~]# mkdir /null #创建空目录

[root@backup ~]# rsync -r --delete /null/ /tmp/ #以同步的方式实现删除

[root@backup ~]# ll /tmp

total 0

④、测试ls查看命令

[root@backup ~]# ll /etc/hosts

-rw-r--r-- 1 root root 182 Mar 22 19:12 /etc/hosts

[root@backup ~]# rsync /etc/hosts

-rw-r--r-- 182 2020/03/22 19:12:03 hosts

  • rsync工作方式

①、本地传输模式 = cp

[root@backup ~]# rsync -a /etc/hosts /tmp/123.txt #备份并重命名

[root@backup ~]# ll /tmp

total 4

-rw-r--r-- 1 root root 182 Mar 22 19:12 123.txt

②、远程数据传输模式 = scp

[root@backup ~]# rsync -a root@10.14.21.2:/etc/hostname /tmp/pull01.txt #拉取并重命名

root@10.14.21.2's password:

[root@backup ~]# ll /tmp/

total 8

-rw-r--r-- 1 root root 182 Mar 22 19:12 123.txt

-rw-r--r-- 1 root root 7 Mar 10 13:12 pull01.txt

[root@backup ~]# rsync -a 1.txt 10.14.21.2:/opt #推送过去

root@10.14.21.2's password:

③、守护进程模式:可以免交互进行备份

3、守护进程配置

1、服务端部署

[root@backup ~]# rpm -qa rsync #检查软件是否安装

rsync-3.1.2-6.el7_6.1.x86_64

[root@backup ~]# vim /etc/rsyncd.conf #cenos6默认没有配置文件,需要自己手动创建

#Author quss

#Time 2020/5/24

#Des rsync的配置文件

uid = rsync #向磁盘进行读写操作的 操作者

gid = rsync #向磁盘进行读写操作的 操作者

use chroot = no #安全相关参数,默认进行内网传输同步,可关闭

max connections = 200 #并发连接数

timeout = 300 #多长时间没有数据传输是,就释放连接,单位秒

pid file = /var/run/rsyncd.pid #运行时,会将进程pid存到一直指定pid文件

lock file = /var/run/rsync.lock #主要配合max connection,达到最大连接数则禁止访问

log file = /var/log/rsyncd.log #日志文件路径

ignore errors #传输时,忽略一些I/O产生的传输错误

read only = false #设置备份目录具有读写权限,即将只读模式关闭

list = false #是否将服务端配置的模块信息 在客户端查看(不安全)

hosts allow = 10.14.21.0/24 #白名单

#hosts deny = 0.0.0.0/32 # 黑名单

auth users = rsync_backup #备份目录的认证用户,虚拟定义的用户 不需要创建

secrets file = /etc/rsync.password #备份目录用户的密码文件

fake super = yes #直接使用rsync用户即可,不需要root就可以存储

#以上为全局配置,对所有模块都生效

[backup] #备份目录的模块名称

comment = "backup dir by cnnc" #注释说明

path = /backup #进行备份的目录信息

#read only = true #如不需要再传输时,可关闭写入的操作

[nfs]

comment = "backup dir by cnnc"

path = /nfs

[root@backup ~]# useradd rsync -M -s /sbin/nologin #创建备份目录管理用户,专门管理

[root@backup ~]# mkdir /backup #创建备份目录

[root@backup ~]# chown -R rsync.rsync /backup #授权

[root@backup ~]# echo "rsync_backup:123123" >>/etc/rsync.password #创建认证文件

[root@backup ~]# chmod 600 /etc/rsync.password #只有root及相应用户才能操作,安全

[root@backup ~]# rsync --daemon #启动rsync守护进程

[root@backup ~]##rsync --daemon --port 8730 #扩展参数,指定rsync端口,可忽略

[root@backup ~]## rsync --daemon --config=/etc/xx.conf #扩展参数,指定配置文件-可忽略

[root@backup ~]# ps -ef|grep rsync #检查进程

root 10828 1 0 10:21 ? 00:00:00 rsync --daemon

root 10830 2041 0 10:21 pts/0 00:00:00 grep --color=auto rsync

[root@backup ~]# netstat -lntup #检查端口

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

2、客户端部署

[root@test02 ~]# rpm -qa rsync #检查软件是否安装

rsync-3.1.2-6.el7_6.1.x86_64

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

#创建认证密码文件 只有密码信息,因为用户信息会在命令行中写入

[root@test02 ~]# chmod 600 /etc/rsync.password #授权,为了安全

3、传输测试

[root@backup ~]# ps -ef|grep rsync |grep -v grep | awk '{print $2}'|xargs kill -9 #杀死进程

[root@backup ~]# which rsync

/usr/bin/rsync

[root@backup ~]# /usr/bin/rsync --daemon #启动rsync

failed to create pid file /var/run/rsyncd.pid: File exists

[root@backup ~]# rm -rf /var/run/rsyncd.pid #如报错,则删除pid文件即可

[root@backup ~]# rsync --daemon

[root@test02 ~]# rsync -avz /etc/hosts rsync_backup@10.14.21.25::backup --password-file=/etc/rsync.password #免交互认证。且传输测试成功

sending incremental file list

hosts

sent 140 bytes received 43 bytes 366.00 bytes/sec

total size is 158 speedup is 0.86

[root@backup ~]# cd /backup/

[root@backup backup]# ll #注意数据属主、属组均为rsync

total 4

-rw-r--r-- 1 rsync rsync 158 Jun 7 2013 hosts

3、扩展应用

①、多模块配置,单模块不好分类管理

[root@backup ~]# vim /etc/rsyncd.conf #修改配置文件,增加多个备份 即分类目录

[backup]

comment = "backup backup by cnnc"

path = /backup

#read only = false

[backup02]

comment = "backup backup02 by cnnc"

path = /backup02

[root@backup ~]# mkdir /backup02 #创建备份目录

[root@backup ~]# chown -R rsync.rsync /backup02/ #授权

[root@backup ~]# ps -ef|grep rsync

root 2943 1 0 11:41 ? 00:00:00 rsync --daemon

root 7633 2470 0 12:24 pts/0 00:00:00 grep --color=auto rsync

[root@backup ~]# ps -ef|grep rsync |grep -v grep | awk '{print $2}'|xargs kill -9

[root@backup ~]# rsync --daemon #启动rsync

failed to create pid file /var/run/rsyncd.pid: File exists

[root@backup ~]# rm -rf /var/run/rsyncd.pid #删除pid文件

[root@backup ~]# rsync --daemon #启动rsync

[root@test02 ~]# rsync -avz /etc/hosts rsync_backup@10.14.21.25::backup02 --password-file=/etc/rsync.password #传输正常,且实现分类管理

sending incremental file list

hosts

sent 140 bytes received 43 bytes 366.00 bytes/sec

total size is 158 speedup is 0.86

②、排除功能

1、排除单个文件

[root@test02 ~]# mkdir /test_dir #创建测试文件夹

[root@test02 ~]# touch /test_dir/{a..d} #创建测试文件

[root@test02 ~]# ll /test_dir/

total 0

-rw-r--r-- 1 root root 0 May 24 12:30 a

-rw-r--r-- 1 root root 0 May 24 12:30 b

-rw-r--r-- 1 root root 0 May 24 12:30 c

-rw-r--r-- 1 root root 0 May 24 12:30 d

[root@test02 ~]# rsync -avz /test_dir/ --exclude=b --exclude=d rsync_backup@10.14.21.25::backup02 --password-file=/etc/rsync.password #排除b和d文件

sending incremental file list

./

a

c

sent 151 bytes received 65 bytes 144.00 bytes/sec

total size is 0 speedup is 0.00

[root@test02 ~]# rsync -avz /test_dir/ --exclude={b,d} rsync_backup@10.14.21.25::backup02 --password-file=/etc/rsync.password #这样写也可以,如排除文件太多则不好书写

sending incremental file list

sent 72 bytes received 20 bytes 184.00 bytes/sec

total size is 0 speedup is 0.00

2、排除多个文件

[root@test02 ~]# cd /test_dir/

[root@test02 test_dir]# vim excllude_file.txt #编写排除文件

b

d

#以上配置文件,必须是每个文件一行,且为相对路径

[root@test02 test_dir]# rsync -avz /test_dir/ --exclude-from=./exclude_file.txt rsync_backup@10.14.21.25::backup02 --password-file=/etc/rsync.password

sending incremental file list

./

a

c

exclude_file.txt #可看到连排除文件也传输了,可在排除文件中把自己也排除掉

sent 231 bytes received 90 bytes 642.00 bytes/sec

total size is 5 speedup is 0.02

[root@test02 test_dir]# vim excllude_file.txt #编写排除文件

b

d

excllude_file.txt

③、用守护进程创建备份目录: 用命令行创建较为方便

#备份到rsync下面的ops目录中,如果没有则创建,如果有ops目录则不变

[root@test02 test_dir]# rsync -avz /test_dir/ --exclude-from=./exclude_file.txt rsync_backup@10.14.21.25::backup02/ops/ --password-file=/etc/rsync.password

sending incremental file list

created directory ops

./

a

c

sent 231 bytes received 110 bytes 682.00 bytes/sec

total size is 5 speedup is 0.01

#备份到开发人员目录中

[root@test02 test_dir]# rsync -avz /test_dir/ --exclude-from=./exclude_file.txt rsync_backup@10.14.21.25::backup02/dev/ --password-file=/etc/rsync.password

sending incremental file list

created directory dev

./

a

c

sent 231 bytes received 110 bytes 682.00 bytes/sec

total size is 5 speedup is 0.01

[root@backup backup02]# tree # 验证是否备份

├── dev

│ ├── a

│ ├── c

│ └── exclude_file.txt

├── exclude_file.txt

├── hosts

└── ops

├── a

├── c

└── exclude_file.txt

2 directories, 8 files

④、访问控制管理

[root@backup ~]# vim /etc/rsyncd.conf

hosts allow = 10.14.21.0/24

#hosts deny = 0.0.0.0/32

#只有allow时, 兜底的默认规则是阻止

#只有deny时, 兜底的默认规则是允许

#既有allow又有deny时,兜底的默认规则是允许,尽量不选择这种规则。

#建议只选择allow即可。

⑤、无差异同步配置(重点)我有的你也有,我没有的你也不能有。

注:小心使用,否则可能不小心清空所有数据

[root@test02 test_dir]# rsync -avz /test_dir/ --delete rsync_backup@10.14.21.25::backup02/dev/ --password-file=/etc/rsync.password

sending incremental file list

b

d

sent 211 bytes received 62 bytes 546.00 bytes/sec

total size is 5 speedup is 0.02

[root@backup dev]# tree # 验证是否无差异同步

├── a

├── b

├── c

├── d

└── exclude_file.txt

0 directories, 5 files

⑥、列表功能配置:建议关闭

[root@backup ~]# vim /etc/rsyncd.conf

list = true #如果改为true,则可在客户端查看服务端 模块信息

[root@backup ~]# ps -ef|grep rsync |grep -v grep | awk '{print $2}'|xargs kill -9 #关闭进程

[root@backup ~]# rm -rf /var/run/rsyncd.pid #删除pid

[root@backup ~]# rsync --daemon #启动rsync

[root@test02 test_dir]# rsync rsync_backup@10.14.21.25:: # 都显示了会不安全,太透明

backup "backup backup by cnnc"

backup02 "backup backup02 by cnnc"

nfs "backup nfs by cnnc"

登录 后评论
下一篇
云栖号资讯小编
12126人浏览
2020-07-13
相关推荐
备份利器Rsync应用详解
1026人浏览
2017-11-14 03:07:00
rsync同步web数据
439人浏览
2013-07-14 22:35:00
rsync同步web数据
467人浏览
2013-07-14 22:35:00
Rsync+sersync数据备份
782人浏览
2017-11-12 16:18:00
rsync远程备份安装设置
525人浏览
2014-03-27 15:16:12
文件同步rsync
816人浏览
2017-09-27 22:18:00
0
0
0
424