Rsync官方站点:http://rsync.samba.org

1. Rsync

rsync是一款开源的实现数据全量与增量同步备份的工具

生产环境中使用的场景:

1:一般用于数据异地备份

2:用于WEB集群节点数据的批量更新

3:用于本地YUM服务器与互联网镜像站软件同步

功能一:

  可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步镜像,远程备份等功能。适合linux/windows等系统

功能二:

  可以再本地主机的不同分区或目录之间进行全量或者增量的复制数据

注意:

rsync的目的是实现本地主机和远程主机上之间的数据快速复制同步镜像,远程备份的能力(包括本地推到远程,远程拉到本地两种同步方式),也可以实现本地不同路径下文件的同步。但不能实现远程路径1到远程路径2之间的同步(scp可以实现)。

功能一:类似于scp命令,但是scp每次都是全量拷贝,而rsync可以进行增量拷贝,scp拷贝数据时加密的,但是rsync是不加密的。

功能二:有类似于cp命令,但是cp每次都是全量拷贝,而rsync可以进行增量拷贝

rsync还可以实现文件和目录的删除功能,这又是相当于RM命令,rsync相当于scp,cp,rm命令。并且还由于他们。

在同步备份时,默认情况下,rsync通过其独特的“quick check”算法,仅同步大小或者最后修改时间发生变化的文件或目录(也可根据权限,属主等变化同步,需要制定参数)。甚至是只同步一个文件里变化的内容部分,所以可以实现快速的同步数据的功能。

2.Rsync特性

1)支持拷贝特殊文件如链接,设备,属组,权限等
2)可以有排除指定文件或目录同步的功能,相当于打包命令tar
3)可以保持原来文件或目录的权限,时间,软硬链接等所有属性均不改变。
4)可实现增量同步,即只同步发生变化的数据,因此数据传输效率更高
5)可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对传输数据加密),也可以通过直接的socket链接(有服务端和客户端)
6)支持匿名(不需要超级用户权限)的或认证的进程模式传输,方便进行数据备份及镜像。

3.Rsync工作方式

(1).本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式。类似于cp命令的功能

(2).本地主机使用远程shell和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式。类似于scp命令的功能,基于ssh通道来传输数据

(3).本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access via rsync daemon"段的格式。这是rsync自身最重要的功能,socket守护进程

前两者的本质是通过管道通信,即使是远程shell。而方式(3)则是让远程主机上运行rsync服务,使其监听在一个端口上,等待客户端的连接。

3.0 Rsync参数  

紫色字符表示不固定,根据自己需求调整。红色字符表示警告。
-a 归档模式传输, 等于-tropgDl
-v 详细模式输出, 打印速率, 文件数量等
-z 传输时进行压缩以提高效率
-r 递归传输目录及子目录,即目录下得所有目录都同样传输
-t 保持文件时间信息
-o 保持文件属主信息
-p 保持文件权限
-g 保持文件属组信息
-l 保留软连接

-P 显示同步的过程及传输时的进度等信息
-D 保持设备文件信息
-L 保留软连接指向的目标文件
-e 使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN 指定排除不需要传输的文件模式 tar命令的排除也是--exclude -X==--exclude-from=FILE
--exclude-from=file 文件名所在的目录文件
--bwlimit=100 限速传输
--partial 断点续传
--delete 让目标目录和源目录数据保持一致 谨慎使用

3.1 rsync数据传输模式

本地数据传输模式(lcoal-only mode),单个主机之间传送,类似cp命令  
 复制
[root@node1 /]# rsync /etc/hosts /tmp #将/etc/hosts推送到/tmp目录,相当于cp /etc/hosts /tmp
[root@node1 /]# rsync -avz /etc/hosts /tmp #当此命令在执行一次时,就不在copy了,体现了rsync的增量copy,
  sending incremental file list
host
sent 175 bytes received 35 bytes 420.00 bytes/sec
total size is 221 speedup is 1.05
 删除
新建空目录 mkdir /null
[root@node1 /]# rsync -r --delete /null/ /test/ #相当于rm命令 /null/目录里面有什么/test/目录里面就有什么,
/null/为空/test/也为空,实际上是删除复制,这个--delete命令有危险
注意:/null/必须加上最后斜线,不加的话代表/null和目录里面的内容,如果加上的话,只表示目录里面的东西
远程数据传输模式,ssh通道数据传输,类似于scp命令,一般设置免秘钥登录
格式: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 下载(拉)
借助ssh通道从远程主机拉取数据

  [root@node1 /]# rsync -avz -e 'ssh -p 22' root@192.168.10.232:/tmp/1.txt /tmp
参数说明:
   1)-avz相当于-vzrtopgDl,表示同步时文件和目录的属性不变,
   2)-P显示同步过程,可以用--progress替换
  3)-e 'ssh -p 22'表示通过ssh的通道传输数据 -p 22 可以省略
rsync在生产环境中的使用场景:

 

============================================================================================

Rsync部署环境:

       

服务端 192.168.200.113
客户端 192.168.200.114

Rsync安装

  部署步骤:

服务端:

1:修改主机名及安装rsync

[root@localhost ~]# hostname rsync-server
[root@localhost ~]# bash
[root@rsync-server ~]# yum install rsync -y
rsync-3.1.2-4.el7.x86_64

2:修改主配置文件

[root@rsync-server ~]# vim /etc/rsyncd.conf

 uid = nobody                                               #用户名
gid = nobody #组名
use chroot = yes #紧固在源目录
address = 192.168.200.113 #监听的IP地址
port = 873 #监听的端口
log file = /var/log/rsyncd.log #日志文件存放位置
pid file = /var/run/rsyncd.pid #进程pid文件存放位置
hosts allow = 192.168.200.0/24 #允许访问的客户端地址
[wwwroot] #共享模块名称
path = /var/www/html #源目录存在路径(监听的目录下的内容变更)
comment = Document Root os www.crushlinux.com #描述信息
read only = yes #是否为只读
dont compress = *.gz*.bz2*.tgz*.zip*.rar*.z #同步时不在压缩的文件类型
auth users = backuper #备份授权用户名

secrets file = /etc/rsyncd_users.db                     #存放账户信息的数据文

3:为备份账户创建数据文件,以冒号分割,密码信息在文件中以明文显示
[root@rsync-server ~]# vim /etc/rsyncd_users.db #客户机连接服务器时的密码
backuper:pwd123                     #用户名高:密码

基于数据文件权限,只有所属用户拥有读和写的权限,组合其他用户只有读的权限

[root@rsync-server ~]# chmod 600 /etc/rsyncd_users.db

启动服务运行命令“rsync --daemon”,以独立监听服务的运行方式,若关闭rsync服务可采用kill杀掉进程或者使用rm -rf /var/run/rsyncd.pid

[root@rsync-server ~]# rsync --daemon                                       #开启rsync服务

[root@rsync-server ~]# netstat -lnpt | grep 873
tcp 0 0 192.168.200.113:873 0.0.0.0:* LISTEN 12749/rsync

编写服务脚本

[root@rsync-server ~]# vim /etc/init.d/rsync
#!/bin/bash
#chkconfig:2345 80 20                      #定义服务的启动级,启动优先级,关闭优先级。以便后面使用chkconfig

#description:rsync server


start(){
netstat -lnpt | grep -q :
[ $? -ne ] && rsync --daemon
} stop(){
netstat -lnpt | grep -q :
[ $? -eq ] && kill $(cat /var/run/rsyncd.pid) && rm -rf /var/run/rsyncd.pid
}

status(){
netstat -lnpt | grep -q :
[ $? -eq ] && echo "Rsyn Daemon is Runing"
} case $ in
start)
start
;;
stop)
stop
;;
restart | reload)
$ stop
$ start
;;
status)
satus;;
*)
echo "用法:$0{start | stop | restart | resload | status}"
esac

[root@rsync-server ~]# chmod +x /etc/init.d/rsync

如果想让服务支持chkconfig,必须定义服务的启动级,启动优先级,关闭优先级,目的是为了更方便的开启和关闭rsync服务

[root@rsync-server ~]# chkconfig --add rsync
[root@rsync-server ~]# systemctl stop rsync

二:使用rsync备份工具192.168.200.114

          有了同步源服务器之后,就可以使用rsync工具来执行远程同步,接下来的操作都在客户机(发起端)执行

          本地备份:备份源和发起端可以是一台机器

 安装rsync 

[root@agent ~]# hostname rsync-agent
[root@agent ~]# bash

[root@rsync-agent ~]# yum install rsync -y

rsync命令格式及备份选项:

服务机准备目录文件及内容

[root@rsync-server ~]# mkdir /var/www/html -p

[root@rsync-server ~]# cd /var/www/html/
[root@rsync-server html]# touch 1.txt
[root@rsync-server html]# ls
1.txt

[root@rsync-server ~]# systemctl stop firewalld
[root@rsync-server ~]# iptables -F
[root@rsync-server ~]# setenforce 0

第一种:单Rsync备份案列,这种属于交互式的传输方式,

客户机操作:

[root@rsync-agent ~]# rsync -avz backuper@192.168.200.113::wwwroot /root                          #将服务机/var/www/html中的1.txt下载到本地
Password:
receiving incremental file list
./
.txt
1.txt

sent 65 bytes received 162 bytes 11.64 bytes/sec
total size is 0 speedup is 0.00
[root@rsync-agent ~]# ls
1.txt    anaconda-ks.cfg     nginx-1.15.9-1.x86_64.rpm    zabbix-3.4.11.tar.gz    公共    模板   视频   图片    文档   下载    音乐    桌面

Rsync默认支持增量备份,已经下载的不会再下载

实验:在服务机/var/www/html再创建几个文件

服务机操作:

[root@rsync-server html]# touch {1..5}.txt
[root@rsync-server html]# ls
1.txt 2.txt 3.txt 4.txt 5.txt

客户机操作:

[root@rsync-agent ~]# rsync -avz backuper@192.168.200.113::wwwroot /root
Password:
receiving incremental file list
./
1.txt
2.txt
3.txt
4.txt
5.txt

sent 122 bytes received 334 bytes 36.48 bytes/sec
total size is 0 speedup is 0.00
[root@rsync-agent ~]# ls
1.txt    3.txt    5.txt    nginx-1.15.9-1.x86_64.rpm    公共    频    文档   音乐
2.txt    4.txt    anaconda-ks.cfg     zabbix-3.4.11.tar.gz    模板    图片   下载    桌面

 这种传法有一种弊端,就是当源共享的目录内存大时,会导致发起段下载速度慢

======================================================================================

第二种:单Rsync备份案例:这种属于无交互式传输

通过export RSYNC_PASSWORD变量保存密码,rsync命令执行时可以自动读取该变量的值,在需要时发送给rsync服务器来进行验证。

服务端:

[root@rsync-server html]# mkdir a/
[root@rsync-server html]# touch 2.txt
[root@rsync-server html]# ls
1.txt     2.txt    a

客户端:

[root@rsync-agent ~]# export RSYNC_PASSWORD=pwd123

[root@rsync-agent ~]# rsync -avzH --delete backuper@192.168.200.113::wwwroot /root

./
2.txt
a/

sent 54 bytes received 164 bytes 18.96 bytes/sec
total size is 0 speedup is 0.00
[root@rsync-agent ~]# ls
1.txt    2.txt    a

通过--password-file选项指定存储密码的文件也是免密传输

服务端:

[root@rsync-server html]# touch {10..20}.txt
[root@rsync-server html]# ls
10.txt 11.txt 12.txt 13.txt 14.txt 15.txt 16.txt 17.txt 18.txt 19.txt 1.txt 20.txt 2.txt a

客户端:

[root@rsync-agent ~]# vim /etc/server.pass

pwd123

[root@rsync-agent ~]# chmod 600 /etc/server.pass

[root@rsync-agent ~]# rsync -avzH --delete --password-file=/etc/server.pass rsync://backuper@192.168.200.113/wwwroot /root

[root@rsync-agent ~]# ls
10.txt 11.txt 12.txt 13.txt 14.txt 15.txt 16.txt 17.txt 18.txt 19.txt 1.txt 20.txt 2.txt a

设置周期计划:每天晚上十点半执行数据同步

[root@rsync-agent ~]# crontab -e
no crontab for root - using an empty one

30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass rsync://backuper@192.168.200.113/wwwroot /roo

 =================================================================================================

运维数据同步工具:rsync,serync,csync,drbd,info(基于文件系统)的更多相关文章

  1. Linux实战教学笔记21:Rsync数据同步工具

    第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...

  2. Rsync数据同步工具

                                        Rsync数据同步工具 什么是Rsync? Rsync是一款开源的.快速的.多功能的,可以实现全量及增量的本地或原程数据同步备份 ...

  3. Linux系统——Rsync数据同步工具

    Rsync的优点及缺点 优点:类似cp命令.scp命令,但rsync为增量复制工具 缺点:针对大文件,效率非常高(打包再比对),针对小文件,效率非常低. Rsync作用 (1)可使本地和远程两台主机之 ...

  4. rsync数据同步工具的配置

    rsync数据同步工具的配置 1. rsync介绍 1.1.什么是rsync rsync是一款开源的快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于 unix ...

  5. Linux系统备份还原工具4(rsync/远程数据同步工具)

    rsync即是能备份系统也是数据同步的工具. 在Jenkins上可以使用rsync结合SSH的免密登录做数据同步和分发.这样一来可以达到部署全命令化,不需要依赖任何插件去实现. 命令参考:http:/ ...

  6. 【基础】:Rsync数据同步工具

    第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsync? 1.1.2 Rsync简介 1.3 Rsync的特性 1.1.4 Rsync的企业工作场景说明 1.2 Rs ...

  7. Linux基础学习-数据备份工具Rsync

    数据备份工具rsync 作为一个系统管理员,数据备份是非常重要的,如果没有做好备份策略,磁盘损坏了,那么你的数据将全部丢失,所以在日常的维护工作中,一定要时刻牢记给数据做备份. rsync不仅可以可以 ...

  8. rsync---远程数据同步工具

    rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而 ...

  9. linux下的数据备份工具rsync讲解

    linux下的数据备份工具 rsync(remote sync 远程同步)   名词解释: sync(Synchronize,即“同步”)为UNIX操作系统的标准系统调用,功能为将内核文件系统缓冲区的 ...

随机推荐

  1. [转]Jarvis OJ- [XMAN]level2/3_x64-Writeup

    学弟写的挺好的,我就直接转过来了 原文链接:http://www.cnblogs.com/ZHijack/p/7940686.html 两道64位栈溢出,思路和之前的32位溢出基本一致,所以放在一起 ...

  2. OSS上传文件时设置请求头

    直接上传: // 如果需要上传时设置存储类型与访问权限,请参考以下示例代码. // ObjectMetadata metadata = new ObjectMetadata(); // metadat ...

  3. nginx挂了怎么办

    1.什么是502 bad gateway 报错: 简单来说 502 是报错类型代码 bad gateway 错误的网关. 2.产生错误的原因: 连接超时 我们向服务器发送请求 由于服务器当前连接太多, ...

  4. 【游戏体验】Sift Heads World Act 1(暗杀行动1)

    >>>点此处可试玩无敌版<<< 注意,本游戏含有少量暴力元素,13岁以下的儿童切勿尝试本款游戏 非常良心的火柴人游戏,值得一玩 个人测评 游戏性 8/10 音乐 9 ...

  5. php curl请求 header头携带参数

    $headers = array(    'api-key:'.$key,    'authorization:'.$authorization,      ); //初始化    $curl = c ...

  6. 新手学习PHP的避雷针,这些坑在PHP开发中就别跳了

    不要!用记事本编辑php文件 早些年能用记事本编程是一些人自我吹嘘的资本,能用记事本编程就是牛逼的代名词.但是这里要告诫大家的是,千万不要使用Windows自带的记事本编辑任何文本文件.用Window ...

  7. ubuntu 切换用户

    app切换root ubuntu: sudo su - app sudo su - root centos : sudo su ############ root 切换app sudo su - ap ...

  8. css: transform导致文字显示模糊

    css: transform导致文字显示模糊 有人认为模糊的原因是:"transform时div的宽度或者高度并不是偶数,偏移 50% 之后,像素点不是整数,和显示像素没有对上". ...

  9. 让ul li 或者table 进行循环往上滚屏

    转载:https://blog.csdn.net/u012138137/article/details/80729789 <div style="display:inline" ...

  10. DRF分页

    一.序列化 from rest_framework impost serializers from . models import * class GoodsSerializer(serializer ...