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' [email protected]:/etc/hosts /root
[email protected]'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 [email protected]:/root
[email protected]'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 [email protected]::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 [email protected]::backup  /opt/  --password-file=/etc/rsync.password

参数选项解释

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

拓展

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

报错

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

你可能感兴趣的:(Rsync数据复制软件应用实践)