课堂笔记day32——rsync服务以及搭建备份服务器
1、什么是rsync?
rsync,Rsync英文全称Remote sunchronization缩写rsync。
是开源、告诉的、可实现本地以及远程,全量以及增量的数据复制(拷贝)工具。
2、全量与增量复制:
1)全量复制:
[root@nfs01 ~]# cp -a /etc/ /opt/
[root@nfs01 ~]# \cp -a /etc/ /opt/
[root@nfs01 ~]# touch /etc/oldboy.txt
[root@nfs01 ~]# \cp -a /etc/ /opt/
2)增量复制:
只复制oldboy.txt
3)要了解知识的源头:
man rsync
man rsyncd.conf
http://www.samba.org/ftp/rsync/rsync.html
3、rsync的作用:
工作中需要定时/实时数据备份。可能是本地服务器目录、不同的机器、不同的机房之间的数据备份,都可以用rsync完成
4、rsync的功能特性:
1)支持拷贝普通文件与特殊文件,如链接文件,设备文件等。
2)支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
3)可以做到保持源文件或目录的权限、时间、软硬链接、属主、属组等所有属性均不改变。
4)可实现增量复制,即只复制发生变化的数据,因此数据传输效率很高。
5)可以使用rcp、rsh、ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)。
6)可以通过socket(守护进程方式)传输文件和数据(服务端和客户端)。
7)支持匿名或认证(无需要系统用户)进程模式传输,安全的进行数据备份及镜像。
5、增量复制原理:
1)使用quick check算法,只对增量的部分复制,根据大小属性的变化进行复制。
2)2.x比对差异后复制,3.x一边比对一边复制。
6、rsync三种工作模式介绍:
1)本地(local)
rsync就是一个命令
rsync [OPTION...] SRC... [DEST]
rsync命令 参数选项 [源目录或文件] 目的目录或文件
2)远程shell模式
借助类似ssh隧道传输数据,适合不同的机器之间复制。
pull(拉):从远端拉取到本地。
语法:
rsync [OPTION...] [USER@]HOST:SRC... [DEST]
rsync命令 参数选项 [认证用户]@[主机地址]:[源路径] 本地路径
push(推):从本地推到远端。
语法:
rsync [OPTION...] SRC... [USER@]HOST:[DEST]
rsync命令 参数选项 本地路径[认证用户]@[主机地址]:[目标路径]
3)rsync守护进程模式:※
首先要搭建服务端,然后才能在客户端实现推拉数据。
企业运维的重要模式。
7、rsunc命令参数:
1)-v,--verbose 显示输出过程层
2)-z,--compress 压缩
3)-a,--archive 多参数集合(-rtopgDl)
4)-r,--recursive 递归
5)-t,--times 保持修改时间属性
6)-o,--owner 保持属主不变
7)-p,--perns 保持权限不变
8)-g,--group 保持用户组不变
9)-l,--links 保持拷贝软链接
10)-q,--quiet 安静的拷贝
11)--bwlimit=KBPS 限制I/O带宽,Kbytes per second
12)--delete 删除
13 --exclude 排除
14)--exclude-form 从文件中排除
15)企业常用参数组合:
-avz
-vzrtopg
8、rsync守护进程模式应用实践
8.1服务端:(以下操作都是backup中)
1)查看版本:
[root@backup/]# rsync --version
rsync version 3.1.2 protocol version 31
没有的话yum install rsync -y 安装
2)配置文件/etc/rsyncd.conf
[root@backup ~]# cp /etc/rsyncd.conf{,.ori}
[root@backup ~]# cat>/etc/rsyncd.conf<<EOF
> #rsync_config_______________start
> #created by oldboy
> #site: http://www.oldboyedu.com
> uid = rsync
> gid = rsync
> use chroot = no
> fake super = yes
> max connections = 200
> 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
> [backup]
> comment = welcome to oldboyedu backup!
> path = /backup/
> EOF
3)创建用户:
[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-x2 rsync rsync 6 4月 15 12:12 /backup/
4)启动和检查:
C6以及C6以前启动: rsync --daemon
C7:
systemctl start rsyncd <==开启服务
systemctl status rsyncd <==查看服务是否开机自启动
systemctl enable rsyncd <==设置开机自启动
systemctl status rsyncd <==查看是否设置成功
[root@nfs01 ~]# ps -ef|grep sync|grep -v grep <==检查进程
root 7735 1 0 11:39 ? 00:00:00 /usr/bin/rsync --daemon--no-detach
[root@nfs01 ~]# netstat-lntup|grep 873 <==检查端口
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 7735/rsync
tcp6 0 0 :::873 :::* LISTEN 7735/rsync
[root@nfs01 ~]# lsof -i:873 <==检查端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODENAME
rsync 7735 root 4u IPv4 42868 0t0 TCP *:rsync (LISTEN)
rsync 7735 root 5u IPv6 42869 0t0 TCP *:rsync (LISTEN)
5)配置密码文件:
[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 ~]# ls -l /etc/rsync.password
-rw------- 1 root root 20 4月 1511:51 /etc/rsync.password
6)rsync服务端配置完成。
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 ~]# echo 'export RSYNC_PASSWORD=oldboy' >>/etc/bashrc
[root@nfs01 ~]# echo $UID
0
[root@nfs01 ~]# tail -1 /etc/bashrc
export RSYNC_PASSWORD=oldboy
[root@nfs01 ~]# . /etc/bashrc
[root@nfs01 ~]# echo $RSYNC_PASSWORD
oldboy
2)rsync客户端配置完成。
8.3守护进程模式、客户端rsync的命令语法:
配置服务器端守护进程,实现数据传输。
pull,拉:从远端拉取到本地。
语法1(常用):
rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync命令 参数选项 [虚拟用户]@[主机地址]::[模块名] 本地路径
语法2:
rsync [OPTION...] rsync://[USER@]HOST::SRC... [DEST]
rsync命令 参数选项 rsync://[虚拟用户]@[主机地址]/[模块名] 本地路径
push,推:从本地推到远端。
语法1(常用):
rsync [OPTION...] [DEST] [USER@]HOST::SRC...
rsync命令 参数选项 本地路径 [虚拟用户]@[主机地址]::[模块名]
语法2:
rsync [OPTION...] [DEST] rsync://[USER@]HOST::SRC...
rsync命令 参数选项 本地路径 rsync://[虚拟用户]@[主机地址]/[模块名]
8.4测试
1)推送数据:
[root@nfs01 /]# touch /tmp/{1..10}.txt
[root@nfs01 /]# mkdir -p /tmp/liuhuan{1..10}
[root@nfs01 /]# ls /tmp
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt liuhuan1 liuhuan10 liuhuan2 liuhuan3 liuhuan4 liuhuan5 liuhuan6 liuhuan7 liuhuan8 liuhuan9
[root@nfs01 /]# rsync -avz /tmp/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
sent 568 bytes received 35 bytes 1,206.00bytes/sec
total size is 24,576 speedup is 40.76
[root@backup /]# ls /backup/
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt liuhuan1 liuhuan10 liuhuan2 liuhuan3 liuhuan4 liuhuan5 liuhuan6 liuhuan7 liuhuan8 liuhuan9
2)将数据从服务器传输到本地:
[root@nfs01 /]# mkdir /oldboy
[root@nfs01 /]# ll /oldboy
总用量 0
[root@nfs01 /]# rsync -avz rsync_backup@172.16.1.41::backup/ /oldboy --password-file=/etc/rsync.password
receiving incremental file
list
1.txt
......
......
liuhuan9/
[root@nfs01 /]# ls /oldboy/
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt liuhuan1 liuhuan10 liuhuan2 liuhuan3 liuhuan4 liuhuan5 liuhuan6 liuhuan7 liuhuan8 liuhuan9