day32

第1章 rsync服务及搭建备份服务器
1.1 什么是Rsync
  Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据复制(拷贝)的优秀工具。
1.2 全量和增量

全量
全部备份

增量
差异化备份,对更新的那一部分进行备份

1.3 Rsync的作用
  工作中的定时/实时数据备份、本地服务器目录、不同机器、不同机房之间的数据备份都可以使用Rsync完成。
1.4 Rsync的功能特性

支持拷贝普通文件与特殊文件,如链接文件,设备文件等。
支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。
可实现增量复制,既只复制发生变化的数据,因此数据传输效率很高。
可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)。
可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
支持匿名或认证(无需系统用户)进程模式传输,安全的进行数据备份及镜像

1.5 增量复制原理
使用quick check算法,只对增量的部分复制,根据大小属性的变化进行复制。

版本
复制原理

Rsync 2.x
比对完所有内容后,对差异的内容进行复制

Rsync 3.x
一边比对文本内容,一边对差异进行复制。

1.6 Rsync三种工作模式介绍
1.6.1 本地(local)
在本地使用,rsync就是一个命令。
语法格式:

rsync
[OPTION...]
SRC...
[DEST]

rsync命令
参数选项
[源目录或文件]
目的目录或文件

命令作用:

把数据从一个地方复制到另一个地方(仅在一台机器增量),相当于cp命令。
通过加参数实现删除功能,相当于rm命令。
查看属性信息功能,相当于ls命令。

拷贝实践:
1.一般复制:
[root@backup ~]ls /opt <===查看目录为空目录 [root@backup ~] rsync /etc/hosts /opt <===拷贝文件hosts
[root@backup ~]$ ls /opt <===查看结果
hosts

2.保持属性复制:
[root@backup ~]rsync -zrtopg /etc/hosts /opt/ <===复制文件 [root@backup ~] ls -l /opt/hosts /etc/hosts <===查看属性
-rw-r--r-- 1 root root 332 4月 12 11:25 /etc/hosts
-rw-r--r-- 1 root root 332 4月 12 11:25 /opt/hosts

删除实践:
1.删除文件内容:
[root@backup ~]touch /null.txt <===创建空文件 [root@backup ~] cat /opt/hosts <===查看原文件内容
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
[root@backup ~]rsync -r --delete /null.txt /opt/hosts <===让后面的hosts和前面的null.txt一样 [root@backup ~] cat /opt/hosts <===查看是否清空

2.删除目录下所有内容:
[root@backup ~]mkdir /null <===创建空目录 [root@backup ~] rsync -r --delete /null/ /opt/ <===让后面opt和前面null目录内容保持一致
[root@backup ~]$ ls /opt/

查看属性:
[root@backup ~]$ rsync /etc/hosts
-rw-r--r-- 332 2019/04/12 11:25:32 hosts

重点:只适合rsync

目录
区别

null
目录和目录下的内容

null/
只是目录下的内容,不含本身

1.6.2 远程shell模式
  借助类似ssh隧道传输数据,适合不同的机器之间的异地拷贝,相当于scp,但是scp是远程全量拷贝。
远程拷贝的两种模式:
1、pull(拉):从远端拉取到本地
语法格式:

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

rsync命令
参数选项
[认证用户]@[主机地址]:[源路径]
本地路径

2、push(推):从本地推到远端
语法格式:

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

rsync命令
参数选项
本地路径
[认证用户]@[主机地址]:[目标路径]

示例:
[root@nfs01 ~]$ rsync -avz /etc/hosts root@172.16.1.41:/opt/ <===加密传输。
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.41' (ECDSA) to the list of known hosts.
root@172.16.1.41's password:
sending incremental file list
hosts

sent 219 bytes received 35 bytes 14.51 bytes/sec
total size is 332 speedup is 1.31

检查:
[root@backup ~]cd /opt/ [root@backup /opt] ls
hosts

以下两条命令是等价的。其中:

参数
含义

-e ssh
指定使用ssh通道

-p 22
指定使用22端口

rsync -avz /etc/hosts root@172.16.1.41:/opt/
rsync -avz /etc/hosts -e "ssh -p 22" root@172.16.1.41:/opt/

示例:
[root@nfs01 ~]# rsync -avz /etc/hosts -e "ssh -p 22" root@172.16.1.41:/opt/
root@172.16.1.41's password:
sending incremental file list

sent 44 bytes received 12 bytes 22.40 bytes/sec
total size is 332 speedup is 5.93

pull(拉)的命令:
rsync -avz root@172.16.1.41:/opt/hosts /opt
rsync -avz -e "ssh -p 22" root@172.16.1.41:/opt/hosts /opt

1.6.3 rsync守护进程模式
  rsync服务模式:开启后台进程,接受别人访问。
  守护进程模式首先要搭建rsync服务端(即守护进程),然后才能在客户端实现推拉数据。守护进程模式是企业运维的一个重要的模式。
1.7 rsync命令参数

参数
说明

-v
--verbose 显示输出过程

-z
--compress 压缩

-a
--archive 多参数集合(-rtopgDl)

-r
--recursive 递归

-t
--times 保持修改时间属性

-o
--owner 保持属主不变

-p
--perms 保持权限不变

-g
--group 保持用户组不变

-l
--links 保持拷贝软连接

-q
--quiet 安静的拷贝

-e
指定传输通道

--bwlimit=KBPS
限制I/O带宽,KBytes per second。

--delete
删除

--exclude
排除

--exclude-from
从文件中排除

企业常用参数组合: -avz或者-vzrtopg
1.8 rsync守护进程模式应用实践
1.8.1 以下操作都是在backup服务器
1.8.1.1 安装rsync命令,若已安装,可以忽略
[root@backup ~]rsync --version <===查看rsync版本 rsync version 3.1.2 protocol version 31 [root@backup ~] yum install rsync <===安装rsync

1.8.1.2 配置配置文件
备份:
cp /etc/rsyncd.conf{,.ori}

修改文件信息:
cat -n /etc/rsyncd.conf
1 #rsync_config_______________start
2 #created by oldboy
3 #site: http://www.oldboyedu.com
4 uid = rsync --->管理备份目录的用户
5 gid = rsync --->管理备份目录的用户组
6 use chroot = no --->安全功能,数据是否锁定到备份目录
7 fake super = yes --->不用root用户也可以存储文件的完整属性
8 max connections = 200 --->最大并发连接数(同时多少客户端访问)
9 timeout = 600 --->超时时间
10 pid file = /var/run/rsyncd.pid --->进程号所在文件
11 lock file = /var/run/rsync.lock --->锁文件
12 log file = /var/log/rsyncd.log --->日志文件,查看报错等信息*****
13 ignore errors --->忽略错误
14 read only = false --->可写
15 list = false --->不允许列表
16 hosts allow = 172.16.1.0/24 --->授权哪些主机可以访问
17 hosts deny = 0.0.0.0/32 --->哪些主机不允许访问
18 auth users = rsync_backup --->远程虚拟连接用户
19 secrets file = /etc/rsync.password --->存放密码的文件(格式为(用户名:密码) 权限:必须为600)
20 [backup] --->[模块名]远程访问一般使用模块名访问
21 comment = welcome to oldboyedu backup! --->说明,注释
22 path = /backup/ --->服务端用户备份的目录(用户和组,rsync.rsync)

创建用户和备份目录:
[root@backup ~]useradd rsync <===创建用户 [root@backup ~] id rsync
uid=1001(rsync) gid=1001(rsync) 组=1001(rsync)
[root@backup ~]mkdir -p /backup <===创建目录 [root@backup ~] chown -R rsync.rsync /backup/ <===修改用户和用户组
[root@backup ~]$ ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 4月 15 12:12 /backup/

1.8.1.3 启动和检查rsyncd服务
启动:
c6及以前:
rsync --daemon
c7:
systemctl start rsyncd <===开启服务
systemctl enable rsyncd <===开启开机自启动
systemctl status rsyncd <===检查服务状态

检查进程和端口:
[root@backup ~]ps -ef|grep sync|grep -v grep <===检查进程 root 7521 1 0 11:39 ? 00:00:00 /usr/bin/rsync --daemon --no-detach [root@backup ~] netstat -lntup|grep 873 <===检查端口
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 7521/rsync
tcp6 0 0 :::873 :::* LISTEN 7521/rsync
[root@backup ~]$ lsof -i :873 <===检查端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 7521 root 3u IPv4 41439 0t0 TCP *:rsync (LISTEN)
rsync 7521 root 5u IPv6 41440 0t0 TCP *:rsync (LISTEN)

1.8.1.4 配置密码文件
[root@backup ~]echo "rsync_backup:oldboy" > /etc/rsync.password [root@backup ~] chmod 600 /etc/rsync.password
[root@backup ~]cat /etc/rsync.password rsync_backup:oldboy [root@backup ~] ll /etc/rsync.password
-rw------- 1 root root 20 4月 15 11:52 /etc/rsync.password

到这里rsync服务端已配置完成
1.8.2 以下操作在客户端服务器
在客户端认证密码,有两种方法:(可以二选一)
方法1:认证密码文件
[root@nfs01 ~]echo "oldboy" > /etc/rsync.password [root@nfs01 ~] chmod 600 /etc/rsync.password
[root@nfs01 ~]cat /etc/rsync.password oldboy [root@nfs01 ~] ll /etc/rsync.password
-rw------- 1 root root 7 4月 15 11:55 /etc/rsync.password

方法2:配置特殊变量RSYNC_PASSWORD [root@nfs01 ~] echo ' export RSYNC_PASSWORD=oldboy' >>/etc/bashrc
[root@nfs01 ~]tail -1 /etc/bashrc export RSYNC_PASSWORD=oldboy [root@nfs01 ~]4 . /etc/bashrc [root@nfs01 ~] echo $RSYNC_PASSWORD
oldboy

到这里rsync客户端 nfs01 配置完成
1.8.3 守护进程模式,客户端rsync的命令语法
配置服务器端守护进程,实现数据传输:

服务器端守护进程。
客户端执行命令。

1.8.3.1 Pull(拉):从远端拉取到本地。
语法1(常用):

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

rsync命令
参数选项
[虚拟用户]@[主机地址]::[模块名]
本地路径

语法2:

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

rsync命令
参数选项
rsync://[虚拟用户]@[主机地址]/[模块名]
本地路径

1.8.3.2 Push(推):从本地推到远端。
语法1(常用):

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

rsync命令
参数选项
本地路径
[虚拟用户]@[主机地址]::[模块名]

语法2:

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

rsync命令
参数选项
本地路径
rsync://[虚拟用户]@[主机地址]/[模块名]

1.8.4 测试成果与报错解决方法
报错1:
[root@nfs01 ~]$ rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
@ERROR: invalid uid rsync
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

原因分析:无效的UID:rsync,需要添加用户rsync,并且发现没有/backup目录,需要创建目录,并将用户和用户组都改为rsync。
解答:
[root@backup ~]useradd rsync [root@backup ~] id rsync
uid=1001(rsync) gid=1001(rsync) 组=1001(rsync)
[root@backup ~]mkdir -p /backup [root@backup ~] chown -R rsync.rsync /backup/
[root@backup ~]$ ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 4月 15 12:12 /backup/

报错2:
[root@nfs01 ~]$ rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
rsync: chgrp ".hosts.YDuTjO" (in backup) failed: Operation not permitted (1)

sent 223 bytes received 124 bytes 694.00 bytes/sec
total size is 332 speedup is 0.96
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

原因分析:/etc/rsyncd.conf文件内缺少参数,导致文件的存储属性不完整。
解答:增加如下参数到/etc/rsyncd.conf
fake super = yes <===增加的参数:不用root用户也可以存储文件的完整属性。
This allows the full attributes of a file to be stored without having to have the daemon actually running as root.
[root@backup ~]grep fake /etc/rsyncd.conf fake super = yes 改完配置,要重启服务: [root@backup ~] systemctl restart rsyncd

参数添加完后再测试:结果成功,没有报错
[root@nfs01 ~]$ rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts

sent 89 bytes received 49 bytes 276.00 bytes/sec
total size is 332 speedup is 2.41
服务端检查结果:
[root@backup ~]$ ls /backup/
hosts

如果客户端按照环境变量的方式配置,则可以忽略--password-file=/etc/rsync.password参数。
[root@nfs01 ~]$ rsync -avz /etc rsync_backup@172.16.1.41::backup
sending incremental file list

sent 52,071 bytes received 644 bytes 105,430.00 bytes/sec
total size is 31,244,350 speedup is 592.70

测试增量
[root@nfs01 ~]touch /etc/oldboy.txt [root@nfs01 ~] rsync -avz /etc rsync_backup@172.16.1.41::backup
sending incremental file list
etc/oldboy.txt

sent 52,098 bytes received 655 bytes 105,506.00 bytes/sec
total size is 31,244,350 speedup is 592.28
第二种语法:
[root@nfs01 ~]$ rsync -avz /etc rsync://rsync_backup@172.16.1.41/backup
sending incremental file list

sent 52,070 bytes received 644 bytes 105,428.00 bytes/sec
total size is 31,244,350 speedup is 592.71
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。copy的。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容