Rsync数据复制软件应用实践

实验需要两台虚拟机
如不会安装请参考https://www.jianshu.com/p/9f3eb5139d18
添加一块内网卡,先自行百度添加

Rsync介绍

什么是rsync?

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。Rsync软件适用于unix/linux/windows等多种操作系统平台。
Rsync是一个快速和非常通用的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制。它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer算法闻名。
rsync监听端口:873
rsync运行模式:C/S

Rsync的功能

①支持拷贝普通文件与特殊文件,如链接文件,设备文件。
②支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
③可以做到保持原文件或目录的权限,时间,软硬链接,属主,组等所有属性均不改变。
④可实现增量复制,即只复制发生变化的数据,因此数据传输效率很高。
⑤可以使用rcp,rsh,SSH等方式来配合进行隧道加密传输文件
⑥可以通过socker传输文件和数据
⑦支持匿名或认证进程模式传输,安全地进行数据备份及镜像。

rsync工作方式介绍与实践

rsync有三种传输数据模式,具体介绍如下:
1.本地传输
类似cp 可实现文件目录移动备份
2.远程shell数据传输模式
远程shell数据传输模式一般是借助通道如ssh 在两台服务器之间进行复制数据,和两台服务器是对等的,没有客户端与服务端之分,整个过程类似与scp远程复制命令
3.守护进程传输模式
守护进程传输模式是在客户端与服务器之间进行数据复制,通常需要服务器端部署守护进程服务,然后在客户端执行命令,实现数据的拉取和推送复制。

本地数据传输模式

rsync [option] src [dest]
rsync 参数选项 源文件或文件 目的目录或文件
rsync #命令
[OPTION...] #选项
SRC... #远程主机模块(不是目录)
[USER@] #远程主机用户(虚拟用户)
HOST:: #远程主机地址
[DEST] #将远程主机模块备份至本地什么位置
-a #归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代 rsh 的 shell 程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输
--delete #让目标目录和源目录数据保持一致

(1) 本地复制(类似cp)
案例一:使用rsync实现本地文件的复制

root@backup ~#: cd /tmp
root@backup tmp#: ls
root@backup tmp#: rsync /etc/passwd /tmp/
root@backup tmp#: ls
passwd

案例二:使用rsync实现本地目录复制

root@backup tmp#: mkdir oldboy
root@backup tmp#: touch oldboy/{1..5}.txt
root@backup tmp#: ls oldboy/{1..5}.txt
oldboy/1.txt  oldboy/2.txt  oldboy/3.txt  oldboy/4.txt  oldboy/5.txt
root@backup tmp#: rsync -r oldboy /root/
root@backup tmp#: cd
root@backup ~#: ls
oldboy
root@backup ~#: ls oldboy/
1.txt  2.txt  3.txt  4.txt  5.txt

(2) 查询数据(类似ls)

root@backup tmp#: rsync /etc/hosts
-rw-r--r--            158 2013/06/07 22:31:32 hosts
root@backup tmp#: rsync oldboy/
drwxr-xr-x             71 2020/01/13 16:15:21 .
-rw-r--r--              0 2020/01/13 16:15:21 1.txt
-rw-r--r--              0 2020/01/13 16:15:21 2.txt
-rw-r--r--              0 2020/01/13 16:15:21 3.txt
-rw-r--r--              0 2020/01/13 16:15:21 4.txt
-rw-r--r--              0 2020/01/13 16:15:21 5.txt

远程shell数据传输语法

远程分为推拉两种
拉取

rsync [option] user@host:src [dest]
rsync 参数选项 认证用户@主机地址:源路径 本地路径

推送

rsync [option] [dest] user@host:src
rsync 参数选项 本地路径 认证用户@主机地址:源路径

数据传输实践
实践一:拉取模式 从远程服务端把/etc/hosts 复制到本地/tmp

root@backup ~#: rsync -av -e 'ssh -p 22' root@172.16.1.31:/etc/hosts /root
root@172.16.1.31's password: 
receiving incremental file list
hosts

sent 43 bytes  received 243 bytes  81.71 bytes/sec
total size is 158  speedup is 0.55
root@backup ~#: ls
hosts  oldboy

实践二:推送模式 把本地服务器/etc/passwd 复制到远程主机的/root下

root@backup ~#: rsync -av /etc/passwd root@172.16.1.31:/root
root@172.16.1.31's password: 
sending incremental file list
passwd

sent 1,187 bytes  received 35 bytes  349.14 bytes/sec
total size is 1,095  speedup is 0.90

root@nfs ~#: ll
总用量 4
-rw-r--r-- 1 root root 1095 1月   3 16:35 passwd

守护进程传输模式

拉取模式

rsync [option] user@host:src [dest]
rsync 参数选项 认证用户@主机地址 端口 / 远端模块名 目的地

推送模式

rsync [option] src user@host::dest
rsync 参数选项 源路径 认证用户 @ 主机地址 :: 远端模块名

部署前准备工作

root@backup ~#: cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
root@backup ~#: uname -r
3.10.0-1062.el7.x86_64
root@backup ~#: uname -m
x86_64
root@backup ~#: rpm -qa rsync
rsync-3.1.2-6.el7_6.1.x86_64

主机信息

主机名 网卡eth0 网卡eth2 用途
nfs 10.0.0.31/24 172.16.1.31/16 NFS存储服务器
backup 10.0.0.41/24 172.16.1.41/16 rsync存储服务器

配置rsyncd.conf

root@backup ~#: vim /etc/rsyncd.conf 

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

  uid = rsync
  gid = rsync
  fake super = yes
  use chroot = no
  max connections = 200
  timeout = 900
  pid file = /var/run/rsync.pid
  lock file = /var/run/rsync.lock
  log file = /var/log/rsync.log
  ignore errors
  read only = false
  list = false
  host allow = 172.16.1.0/24
  auth users = rsync_backup
  secrets file = /etc/rsync.password
  [backup]
  comment = welcome to oldboyedu backup!
  path = /backup/

配置文件解释

  uid = rsync                            用户名
  gid = rsync                            用户组
  fake super = yes                       允许不已root身份运行,就可以改变文件属性
  use chroot = no                        禁锢推送的数据至某个目录, 不允许跳出该目录
  max connections = 200                  最大连接数
  timeout = 900                          超时时间
  pid file = /var/run/rsync.pid          将进程pid写入此文件
  lock file = /var/run/rsync.lock        指定lock文件用来支持最大连接次数
  log file = /var/log/rsync.log          输入日志信息
  ignore errors                          忽略I/O错误
  read only = false                      上传文件
  list = false                           允许查看可用模块列表
  host allow = 172.16.1.0/24             指定ip
  auth users = rsync_backup              可使用模块
  secrets file = /etc/rsync.password     指定密码存放文件
  [backup]                               模块名
  path = /backup/                        模块对应文件路径

配置用于数据备份的目录
如果配置文件配置了path=/backup 这里的/backup备份目录默认不存在需创建

root@backup ~#: useradd rsync -s /sbin/nologin -M    创建用户
root@backup ~#: mkdir -p /backup                     创建模块对应目录
root@backup ~#: chown -R rsync.rsync /backup         给目录授权为rsync用户

配置用于rsync复制的账号 密码 及账号文件权限

root@backup ~#: echo 'rsync_backup:oldboy' >/etc/rsync.password    将账号和密码写入文件
root@backup ~#: chmod 600 /etc/rsync.password                     文件必须为600权限

启动rsync服务

systemctl start rsyncd                   启动服务
systemctl enable rsyncd                  开机自启
systemctl status rsyncd                  检查启动状态和开机自启动状态

rsync客户端操作

root@nfs ~#: echo 'oldboy' >/etc/rsync.password            密码必须和服务器相同
root@nfs ~#: chmod 600 /etc/rsync.password                 授权600

测试数据传输

推送

root@nfs ~#: rsync -avzP /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
······发送内容省略·······
sent 48,666 bytes  received 655 bytes  98,642.00 bytes/sec
total size is 27,801,952  speedup is 563.69

root@backup backup#: ls
etc

拉取

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

参数选项解释

-a        保持文件属性
-z        传输的数据进行压缩
-P        显示进度信息
-v        详细传输情况

拓展

在添加一个模块
对应模块创建目录
授权
在重启服务(每更改一次配置文件就要重启一次)

报错

1.检查密码文件权限是否为600
2.检查配置文件用户属主是否为root,不需要改成普通用户
3.密码文件是否写错

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

推荐阅读更多精彩内容