day32-Rsync功能了解

智慧源自于多角度的视野,能力来源于多种选择!

1. 什么是Rsync?

远程同步
开源的、高速的、数据复制(拷贝)工具

2. 作用

工作中需要/定时/实时数据备份。本地服务器目录、不同的机器、不同机房之间的数据备份。都可以用Rsync完成

3. Rsync功能特性

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

4. 全量和增量的区别

增量复制:
只复制改变的文件
全量复制:
第一次与第二次复制没区别,把没有改变的文件也复制

5. 增量复制原理

默认情况下,在备份复制数据时Rsync通过其独特的“quick check”算法,它仅复制大小后者最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化复制,但需要指定相应的参数,升值可以实现只复制一个文件里有变化的内容部分,所以可以实现快速的备份复制数据,即采用增量复制方法对数据信息复制,与传统cp,scp拷贝工具的全量拷贝复制截然不同,增量复制数据,在效率上远远高于全量复制。
在CentOS5系统上,rsync 软件版本默认为2.x,同步增量复制数据原理是把左右的文件对比一遍,然后进行再进行数据同步。再CentOS6和7系统上,rsync 软件版本默认为3.x,增量复制数据原理是一边对比差异,一边对差异的数据进行复制。从增量复制数据效率而言,rsync 3.x 版本比rsync 2.x 更有优势一些
可以利用rsync 命令参数查看当前系统中rsync软件版本信息。
rsync --version


image.png
image.png
image.png

6. Rsync三种工作模式介绍

1)本地模式(local)
在该模式下,Rsync就是个命令
a. 可以像CP一样的拷贝,把数据从一个地方复制到另一个地方(仅在一台机器增量),相当于CP命令
b. 通过加参数实现删除功能,相当于rm命令
c. 查看属性信息,相当于ls
实践
拷贝

[root@backup ~]# ls /opt
[root@backup ~]# rsync /etc/hosts /opt
[root@backup ~]# ls /opt
hosts
[root@backup ~]# \cp /etc/hosts /opt

拷贝过后,默认属性会变

删除
删除文件内容:

[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 --delete /null.txt /opt/hosts  #让前面null.txt和后面hosts一样
rsync: --delete does not work without --recursive (-r) or --dirs (-d).
rsync error: syntax or usage error (code 1) at main.c(1567) [client=3.1.2]
[root@backup ~]# rsync -r --delete /null.txt /opt/hosts
[root@backup ~]# cat /opt/hosts 
删除目录下所有文件:
[root@backup ~]# mkdir /null
[root@backup ~]# rsync -r --delete /null/ /opt/       #让后面opt和前面null目录内容保持一致
[root@backup ~]# ls /opt/
c.查看属性
[root@backup ~]# rsync /etc/hosts
-rw-r--r--            332 2019/04/12 11:24:41 hosts
![image.png](https://upload-images.jianshu.io/upload_images/16833261-46340fdbcbdc7b16.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

查看属性
rsync 文件 查看文件属性
2) 远程shell模式
借助类似ssh这种隧道传输数据,适合不同的机器之间的复制
相对的,
pull 拉:从远端拉取到本地
rsync 参数选项 认证用户 @主机地址:原路径 本地路径

push 推:从本地推送到远端

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

push实践

rsync -avz /etc/hosts  root@172.16.1.41:/opt 

The authenticity of host '172.16.1.41 (172.16.1.41)' can't be established.
ECDSA key fingerprint is SHA256:QTw3XQMNvuP8pQ8FVQeIf5XstBmA2sSDXymJF78c1vw.
ECDSA key fingerprint is MD5:ea:5b:2b:63:25:75:ba:e5:67:0a:cf:20:e1:d1:62:57.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or '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  20.32 bytes/sec
total size is 332  speedup is 1.31

-e 指定通道 ssh服务连接客户端
-p 指定端口
拉:

[root@nfs01 ~]# rsync -avz   root@172.16.1.41:/opt/hosts   /opt 
root@172.16.1.41's password: 
receiving incremental file list
hosts

sent 43 bytes  received 219 bytes  58.22 bytes/sec
total size is 332  speedup is 1.27
[root@nfs01 ~]# cd /opt
[root@nfs01 /opt]# ll
total 4
-rw-r--r-- 1 root root 332 Apr 12 13:25 hosts

推拉:
a. 参照物,执行命令的机器
b. 使用的用户和主机,就用这个主机的用户和密码
强调:
null 和 null/ 区别
null是目录和目录下的内容
null/只是目录下的内容,不包含本身
3)Rsync守护进程模式

首先要搭建服务端(需要有守护进程),然后才能在客户端实现推拉数据
工作中重要模式:
客户端语法暂时不讲。
rsync 服务模式:*****开启后台进程,接受别人的访问

7. Rsync 命令参数

rsync命令参数:
-v, --verbose 显示输出过程
-z, --compress压缩
-a, --archive 多参数集合(-rtopgD1)
-r, --recursive递归
-t,--times 保持修改时间属性
-o, --owner 保持属主不变
-p, --perms 保持权限不变
-g, --group 保持用户组不变
-l, -iinks 保持拷贝软连接
-q, --quiet 安静的拷贝
--bwlimit=KBPS限制I/O带宽, KBytes per second
--delete .删除
--exclude排除
--exclude-from从文件中排除


image.png

企业中常用参数组合
-avz 或者-vzrtopg

8. Rsync 守护进程模式应用实践

(1)以下操作都在backuo服务器上

?1)安装查看版本号

rsync --version
rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, prealloc

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

?2)编辑/etc/rsync.conf 文件,提前备份

cat >/etc/rsyncd.conf<<EOF
#rsync_config_______________start
#created by oldboy
#site: http://www.oldboyedu.com
uid = rsync         管理备份目录的用户
gid = rsync         管理备份目录的用户组
use chroot = no   安全功能,是否锁定到备份目录
max connections = 200  并发连接,同时多少客户端访问
fack super = yes   
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 = 172.16.1.0/24    授权那些主机可以访问(工作中二选一)
hosts deny = 0.0.0.0/32          拒绝那些主机不允许访问(工作中二选一)
auth users = rsync_backup    远程虚拟连接用户(名字可更改)
secrets file = /etc/rsync.password  存放密码文件 格式:用户名:密码 权限要求600
[backup]                                      [??椋ū晔叮远程范文使用??槊?comment = welcome to oldboyedu backup!  说明注释
path = /backup/  服务器端用于备份的目录,用户和组, rsync.rsync
EOF

学会了解知识的源头
man rsync 查命令的参数
man rsyncd.conf 查看文件的参数
创建目录检查备份

[root@backup ~]# useradd rsync
[root@backup ~]# mkdir -p /backup
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)

?3)启动和检查

rsync  --daemon
systemctl start rsyncd  CentOS7

??启动检查
??检查开机自启动

[root@backup ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-04-15 11:40:04 CST; 30s ago
 Main PID: 10140 (rsync)
   CGroup: /system.slice/rsyncd.service
           └─10140 /usr/bin/rsync --daemon --no-detach

Apr 15 11:40:04 backup systemd[1]: Stopped fast remote file copy program daemon.
Apr 15 11:40:04 backup systemd[1]: Started fast remote file copy program daemon.
Apr 15 11:40:04 backup rsyncd[10140]: rsyncd version 3.1.2 starting, listening on port 873

检查进程和端口


rsync --daemon(c6及以前)
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)

rsync 端口号为873

4)配置密码文件
[root@backup ~]# echo " rsync_backup:oldboy" >/etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password
服务端配置完成

(2)以下操作都是在客户端服务器

方法1:认证密码文件
[root@nfs01 ~]# echo " rsync_backup:oldboy" >/etc/rsync.password
[root@nfs01 ~]# echo "oldboy" >/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ll /etc/rsync.password
-rw------- 1 root root 7 Apr 15 11:55 /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
oldboy

方法2:
echo ‘export RSYNC_PASSWORD=oldboy’ >>/etc/bashrc
tail -i /etc/bashrc
export RSYNC_PASSWORD=oldboy
[root@nfs01 ~]# . /etc/bashrc
[root@nfs01 ~]# echo $RSYNC_PASSWORD
oldboy

两种方法二选一
客户端nfs01配置完成

(3)守护进程模式,客户端rsync的命令语法
配置服务器端的守护进程,实现数据传输
1、 服务器端守护进程
2、 客户端执行命令

image.png

(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]
解答:
[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
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

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

服务端检查:
[root@backup ~]# ls /backup/
hosts
[root@backup ~]# ls /backup/
etc 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

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

推荐阅读更多精彩内容

  • 《博物馆奇妙夜》(Night at the Museum)是二十世纪??怂沟缬肮境銎返囊徊科婊孟簿缙?,由肖恩?利...
    fjarvr阅读 408评论 0 0
  • 前言原网页地址:http://www.cocoachina.com/ios/20150505/11751.html...
    LZM轮回阅读 484评论 0 0
  • 在开始写正文的时候,还没想好标题名字。前一天在晚上洗脸的瞬间,想起来和爸爸在一起的三个片段,和男朋友打着电话边...
    呢喃酱阅读 171评论 0 3
  • 这几天特别忙,每天要收拾家里,然后还要去街上买各种的年货。 昨天陪表妹一起帮她们买年货,跑上跑下没有车真的很不方便...
    成子曰阅读 139评论 0 1