您的位置 首页 linux云计算

rsync命令详解(rsync实时备份) rsync -avz (rsync安装)

rsync 详细介绍:rsync 全称: remote synchronizaiton  (读: r  think)

rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝

rsync是一款开源、快速、多功能、可实现全量及增量的本地或远程数据同步备份的优秀工具。 centos7已经默认安装了 rsync

rsync软件适用于Unix/linux/Windows等多种操作系统平台。rsync 官网地址

rsync 监听端口 873  , 运行模式 C/S 架构

Rsync 命令对应选项:

-a           #归档模式传输, 等于-tropgDl
-v           #详细模式输出, 打印速率, 文件数量等
-z           #传输时进行压缩以提高效率
-r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t           #保持文件时间信息
-o           #保持文件属主信息
-p           #保持文件权限
-g           #保持文件属组信息
-l           #保留软连接
-P           #显示同步的过程及传输时的进度等信息
-D           #保持设备文件信息
-L           #保留软连接指向的目标文件
-e           #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN   #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100       #限速传输
--partial           #断点续传
--delete            #让目标目录和源目录数据保持一致 无差异同步
--password-file=xxx #使用密码文件

Rsync的特性:

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

生产场景架构集群备份方案

1.借助cron+rsync把所有客户服务器数据同步到备份服务器。
2.针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。
3.通过本地打包备份,然后rsync结合inotify应用把全网数统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果。
4.定期将IDC机房的数据 备份公司的内部服务器,防止机房地震及火灾问题导致数据丢失。
5.实时同步,解决存储服务器等的单点问题。

 

备份类型: 全量备份, 增量备份

 

Rsync 传输模式 3种

本地方式 (了解)

2远程访问模式

3  c/s架构,守护进程模式

一、本地模式(了解)

rsync -avz 

rsync -avh /opt/2.txt /tmp/

 

二、远程访问模式

拉取: rsync -avz 用户@主机:源文件 目标文件

案例1: 在41主机上下载31家目录下的1.txt到当前目录

rsync -avz root@nfs:/root/1.txt .

注意: 如果不加用户默认以当前的用户为远程访问用户发起请求
如果当前登录的为root用户 则使用的是backup的root身份下载数据
如果当前登录的为baimei用户 则使用的是backup的baimei 用户身份下载数据

推送: rsync -avz 源文件 用户名@主机:目标文件

三  c/s架构,守护进程模式 (掌握)

第一步:安装服务(这种模式需要单独安装一下)

yum -y install rsync

 

第二步: 配置服务rsync
rsync配置文件: /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]
path = /backup

 

配置文件 path 必须有空格

多个用户: 配置这个

auth users = rsync_backup,test,test2

 

第三步: 根据配置文件创建必要的数据信息

1)创建虚拟用户rsync

useradd -M -s /sbin/nologin rsync

 

2)创建虚拟用户的密码文件 并且设置 权限为600

vi  /etc/rsync.passwd

rsync_backup:123456

chmod 600 /etc/rsync.passwd

 

3)创建用户的上传数据的目录/backup 并且属主属组为rsync

mkdir /backup

chown rsync.rsync /backup/

ll -d /backup/

 

第四步: 启动服务rsync

systemctl start rsyncd

加入开机自动运行

systemctl enable rsyncd

# 查看端口是否启动

netstat -tnulp

 

安装配置成功! 接下来演示一下 客户端如何使用: 这是 在41 机器上配置的。

 

第五步: 删掉 rsync进程

不能用 systemctl 关闭rsyncd服务

只能这样:

linux 批量关闭运行中的rsync进程

ps -ef |grep rsync |grep -v grep |awk {'print $2'}

 

for i in `ps -ef |grep rsync |grep -v grep |awk {'print $2'}`
do
kill -9 $i
echo "Kill Si successed."
done

 

 

 

客户端使用:

安装 rsync 客户端:(跟服务端一样的包)

yum -y install rsync

先测试一下 通不通, 一般默认服务端端口是873

telnet 39.107.126.8 873

 

上传:

rsync -avz test.txt rsync_backup@172.16.1.41::backup
rsync -avz test.txt rsync_backup@39.107.126.108::backup

注意这里的 用户 rsync_backup,是你配置文件中配置的, 包括 rsync.pass 中的用户。

案例1: 在31客户端上传/etc/hosts文件到backup模块下

rsync -avz /opt/2.txt rsync_backup@backup::backup

案例2: 下载backup模块下的目录 baimei  到本地的/opt目录下

rsync -avz rsync_backup@backup::backup/baimei  /opt/

注意: 如果只有模块则默认下载全部文件

4)rsync其他配置

密码管理: 客户端不需要每次输入密码,指定密码文件 (对shell 编程有帮助)

方案一: 指定密码文件

第一步创建密码文件并且授权为600

vi  /etc/rsync.pass
输入密码:123456

chmod 600 /etc/rsync.pass

 

第二步: 执行命令指定密码文件

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

 

方案二 使用rsync内置变量

RSYNC_PASSWORD 在客户端输入密码时候rsync会先读取此变量,如果有则使用此密码,如果没有则提示用户输入密码

export RSYNC_PASSWORD=123456

rsync -avz /etc/passwd rsync_backup@backup::backup

 

(shell脚本可以直接写进去)

 

实战脚本:

rsyncdata.sh

rsync -avz /mnt/data/zzy/data  rsync_backup@39.107.126.8::backup/192.168.1.250harbor/data/   --password-file=/etc/rsync.pass

--password-file=/etc/rsync.pass

vim  /etc/rsync.pass
输入密码: 123

改变权限

chmod 600  /etc/rsync.pass

 

 

定时任务:

cat  /etc/crontab

00 01 * * * root sh /mnt/data/zzy/data/scripts/rsyncdata.sh &>/dev/null

 

 

无差异同步: --delete

以本地的/data为主

rsync -avz --delete /data/ rsync_bakcup@172.16.1.41::backup

以服务端的backup模块为主

rsync -avz --delete rsync_bakcup@172.16.1.41::backup /data/

无差异 同步 中企业应用 案例: 快速恢复业务

线上代码 被篡改,然后本地测试服务器可以快速使用 --delete 模式

需要先将线上服务器的代码备份到/tmp一份(查找原因)

rsync -avz --delete /data/code/ root@116.63.0.10:/data/code/

 

Rsync的Limit限速

--bwlimit  企业案例应用:

某DBA使用rsync拉取备份数据时,由于文件过大导致内部交换机带宽被沾满,导致用户的请求无法响应
提前上传视频到41的/backup目录下然后使用限速下载测试

export RSYNC_PASSWORD=zls

rsync -avz --bwlimit=1M rsync_backup@172.16.1.41::backup/ /data/

 

Rsync 备份服务实战(原)

 

rsyncd.conf 配置文件:

[root@backup ~]#cat rsyncd.conf

 

uid = www
gid = www
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]
path = /backup

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章