文章目录
reync备份服务实战
1.reync基础概述
角色 | 外网IP(NAT) | 内网IP(LAN) | 主机名 |
---|---|---|---|
NFS | eth0:10.0.0.11 | eth1:172.16.1.11 | nfs01 |
Rsync | eth0:10.0.0.12 | eth1:172.16.1.12 | backup |
1.什么是备份
备份就是把文件复制一份存起来(增加一个副本)
2.为什么备份
数据非常重要
保证数据不丢失
便于快速的恢复
3.能不能不做备份
可以,对于不是特别重要的数据可以不考虑
完全备份 占用空间 效率不高
增量备份 节省空间 效率高
备份工具:
本地备份:cp 将什么数据拷贝到那个目录下 (不可以离开服务器本身)
远程备份:scp 基于ssh协议基础实现的更安全的cp ,可以实现跨主机
rsync 远程同步工具,实现 “ 不同操作系统 ” 之间数据同步
Linux ---》 Linux Linux ---Windows Linux --- MacOS
4.rsync模式
1.基于命令使用,就好像在使用cp命令
2.基于服务的方式启动,就需要暴露端口,让程序持续运行
C/S client/Server 结构
5.rsync数据传输方式
本地传输: 和cp差不多
Local: rsync [OPTION...] SRC... [DEST]
nginrsync: #命令
[OPTION...] #选项
SRC... #源
[DEST] #目标
==总结==:使用rsync命令将什么文件拷贝到什么路径下
rsync OPTION SRC DEST
rsync -avz /etc/hosts/tmp
cp - a /etc/hosts /tmp
rsync -avz /etc/hosts /tmp # 第一次全量
rsync -avz /etc/hosts /tmp # 第二次增量,由于没有变化,所以没有更新操作
echo "##" >> /etc/hosts # 将文件产生变化
rsync -avz /etc/hosts /tmp # 再次执行,会同步发生变化的内容
push #推送
Pull #拉取
远程传输:A-B 可以在机器之间互相传输数据(推送和拉取) --》 依赖ssh协议,系统root密码。
推送:
rsync [OPTION...] SRC... [USER@]HOST:DEST
文件: 将11服务器的/etc/hosts文件,推送到12服务器的/tmp,使用root用户
[root@rui ~]# touch /opt/1.txt
[root@rui ~]# rsync -avz /opt/1.txt root@172.16.1.12:/tmp
root@172.16.1.12's password:
sending incremental file list
1.txt
sent 84 bytes received 35 bytes 11.33 bytes/sec
total size is 0 speedup is 0.00
目录: 将11服务器的/opt目录以及目录下的所有文件都推送到12服务器的/tmp目录,使用的是12服务器的root用户身份
[root@rui ~]# rsync -avz /tmp root@172.16.1.12:/opt
root@172.16.1.12's password:
sending incremental file list
tmp/
tmp/hosts
tmp/ks-script-AShK6w
tmp/yum.log
tmp/.ICE-unix/
tmp/.Test-unix/
tmp/.X11-unix/
tmp/.XIM-unix/
tmp/.font-unix/
sent 1,385 bytes received 133 bytes 433.71 bytes/sec
total size is 997 speedup is 0.66
拉取:
rsync OPTION...HOST:SRC... [DEST]
文件:拉取31服务器/tmp/yum.log文件,至41本地的/opt目录
[root@rui ~]# rsync -avz root@172.16.1.12:/tmp/yum.log /opt/
root@172.16.1.12's password:
receiving incremental file list
yum.log
sent 43 bytes received 85 bytes 36.57 bytes/sec
total size is 0 speedup is0.00
目录: 目录:拉取31服务器/tmp目录以及目录下的所有内容,到41服务器的/opt目录下
rsync -avz root@172.16.1.12:/tmp /opt/
root@172.16.1.12's password:
receiving incremental file list
tmp/
tmp/1.txt
tmp/ks-script-AShK6w
tmp/yum.log
tmp/.ICE-unix/
tmp/.Test-unix/
tmp/.X11-unix/
tmp/.XIM-unix/
tmp/.font-unix/
tmp/opt/
tmp/systemd-private-2ba621ac312148a991cd97e2a142d6f9-chronyd.service-MwYxU5/
tmp/systemd-private-2ba621ac312148a991cd97e2a142d6f9-chronyd.service-MwYxU5/tmp/
tmp/systemd-private-fa9eb8f36c154618ba1a6cabea720e3f-chronyd.service-w8wcz7/
tmp/systemd-private-fa9eb8f36c154618ba1a6cabea720e3f-chronyd.service-w8wcz7/tmp/
tmp/vmware-root_1077-4256545038/
tmp/vmware-root_951-4013330126/
tmp/vmware-root_955-3988228421/
tmp/vmware-root_967-4248221830/
sent 145 bytes received 1,346 bytes 596.40 bytes/sec
total size is 836 speedup is 0.56
守护进程:(不使用系统的真实用户,可以自行diy一个用户。)
Access via rsync daemon:
Pull: rsync OPTION...HOST::SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
服务端:10.0.0.11 客户端:10.0.0.12
安装配置服务
安装
[root@rui ~]# yum -y install rsync #安装rsync
配置(让软件按照我们所设定预期去运行)
[root@rui ~]# rpm -qc rsync #查看rsync配置文件的位置
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
[root@rui ~]# cat /etc/rsyncd.conf #看一下他的配置文件内容
[root@rui ~]# > /etc/rsyncd.conf # 清除rsync配置文件原有内容
[root@backup ~]# vim /etc/rsyncd.conf #重新编写配置文件
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to backup serve
path = /backup
2.配置文件注释:
uid = rsync # rsync进程是使用rsync用户身份运行
gid = rsync #
port = 873 # 默认监听的端口是873
fake super = yes # 不用root身份也可以存储完整的数据以及数据属性
use chroot = no # 固定在某一个目录中
max connections = 200 # 最大的连接数
timeout = 600 # 连接超时时间
ignore errors # 忽略错误
read only = false # 可以进行读和写操作
list = false #
auth users = rsync_backup # 自行定义假的用户(不存在于系统中)
secrets file = /etc/rsync.passwd # 存储假用户的密码 username:password
log file = /var/log/rsyncd.log # 日志
#####################################
[backup] # 模块名称
comment = welcome to backup server # 描述的意思
path = /backup # 模块名称对应的具体目录
3.根据配置文件,初始化操作:
3.1 创建rsync用户(主要是rsync进程运行时需要使用的身份)
[root@rui ~]# useradd rsync -r -M
3.2 创建密码文件/etc/rsync.passwd 密码文件中要填写username:password 用户要与配置文件中定义的一致
[root@rui ~]# echo "rsync_backup:1" > /etc/rsync.passwd #自定义用户并设置密码“1”。
[root@rui ~]# chmod 600 /etc/rsync.passwd #给文件600权限 默认644权限,其他用户对它有执行权限
[root@rui ~]# cat /etc/rsync.passwd #查看文件内容
rsync_backup:1
3.3创建存储数据目录:/backup
[root@rui ~]# mkdir /backup #创建/backup
[root@rui ~]# chown -R rsync.rsync /backup/ #给他属主属组到rsync
启动
[root@rui ~]# systemctl restart rsyncd #启动rsyncfuwu
[root@rui ~]# systemctl enable rsyncd #开机自动启动rsync服务
[root@rui ~]# netstat -lntp #列出所有tcp和udp端口 (还有别的,我只复制了rsync的)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Addresstcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 19399/rsync
tcp6 0 0 :::873 :::* LISTEN 19399/rsync
测试 (客户端使用推送或拉取你的方式)
10.0.0.12模拟客户端进行推送测试:
[root@rui tmp]# rsync -avz rsync_backup@10.0.0.11::backup /mnt/ #把客户端的/tmp目录推送到服务端
rsync选项参数:
-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.–delete
推送:客户端有100文件,服务端有200文件,服务端最后就剩下客户端的100个文件,高度与客户端一致
[root@nfs ~]# touch /mnt/file-{1..10}
[root@nfs ~]# rsync -avz /mnt/ rsync_backup@172.16.1.41::backup
[root@nfs ~]# rsync -avz /etc/ rsync_backup@172.16.1.41::backup
[root@nfs ~]# rsync -avz --delete /mnt/ rsync_backup@172.16.1.41::backup
拉取: 客户端有 100文件,服务端游200文件, 客户端最终剩下200个服务端的文件,与服务端保持一致、
[root@nfs ~]# cp /etc/* /mnt/
[root@nfs ~]# rsync -avz --delete rsync_backup@172.16.1.41::backup /mnt/
2.–bwlimit限速 按照MB
[root@nfs ~]# dd if=/dev/zero of=/opt/bigdata bs=1M count=500
[root@nfs ~]# du -sh /opt/bigdata
[root@nfs ~]# rsync -avzP /opt/bigdata rsync_backup@172.16.1.41::backu
开启限速:
[root@backup ~]# rm -f /backup/bigdata
[root@nfs ~]# rsync -avzP --bwlimit 10 /opt/bigdata rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
bigdata
262,078,464 49% 9.89MB/s 0:00:25
2.客户端非交互传输数据至服务端。
2.1) RSYNC_PASSWORD
[root@nfs ~]# export RSYNC_PASSWORD=1
[root@nfs ~]# rsync -avzP --bwlimit 10 /opt/bigdata rsync_backup@172.16.1.41::backup
2.2) --passwd-file=/path/password ( 文件中仅可以存储客户端密码。多一点都不行。) 只需要在客户端创建该文件即可
[root@nfs ~]# echo "1" > /etc/rsync.pass
[root@nfs ~]# chmod 600 /etc/rsync.pass
[root@nfs ~]# rsync -avzP --bwlimit 10 /opt/bigdata rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.pass
@ERROR: auth failed on module backup # 密码文件权限为600
rsync: mkstemp ".hosts.K9azMA" (in backup) failed: Permission denied (13)