什么是Rsync?

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地货远程数据同步备份的优秀工具。适用于unix/linux/windows等多种操作系统平台。

Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似SSH带scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝,当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。同样,rsync还可以实现删除文件或目录的功能,这又相当于rm命令。

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

提示:传统的cp,scp工具拷贝每次均为完整的拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝的功能,因此,从同步数据的性能及效率上,rsync工具更胜一筹。

Rsync的工作方式:

第一种工作模式:local(类似于cp命令的功能)

测试如下:将t1目录下所有文件同步到 /tmp/目录下

rsync -avz ./ /tmp/           //-avz:保持文件属性不变,此命令相当于cp

用t1目录将/tmp/目录清空,可以用--delete参数配合。(尽量不要用,危险)

rsync -avz --delete /null/ /tmp/    //-avz:保持文件属性不变,此命令相当于rm

第二种工作模式:remote shell (类似于scp命令功能)

push:
通过隧道远程备份: 将本机t1目录下所有文件同步到192.168.43.118机器/tmp/目录下。
rsync –avzP -e ‘ssh –p 22’ /t1/ root@192.168.43.200:/tmp         //-e通过隧道方式ssh 22端口模式

pull:

将192.168.43.118机器/tmp/目录下所有增量文件同步到192.168.43.117/t1/目录下。

在192.168.43.118机器/tmp/目录下新建一个118.log文件

将192.168.43.118机器/tmp/目录下所有增量文件同步到192.168.43.117/t1/目录下。

rsync –avzP -e ‘ssh –p 22’  root@192.168.43.118:/tmp/ /t1/     //-e通过隧道方式ssh 22端口模式

rsync –avzP /本地目录 –e ‘ssh –p 22’ root@192.168.43.118:/远端目录

rsync –avzP  –e ‘ssh –p 22’ root@192.168.43.118:/远端目录 本地目录

-P  :大写的,接端口,默认22端口时可以省略-P22

-r  :递归,表示拷贝目录

-p  :小写,表示在拷贝前后保持文件或目录属性。

-l   :limit 限制速度

------------------------------------------------------------------------------------------

第三种模式:以守护进程(socket)的方式传输数据(这个是rsync自身的重要的功能)

测试:服务端ip:192.168.43.200  客户端1ip:192.168.43.119 客户端2ip:192.168.43.118

rsync-server服务端配置:

①vi /etc/rsyncd.conf  添加如下代码↓↓↓↓↓↓

#Rsync server

#created by bqh 21:30 2018-12-05
#rsyncd.conf start
uid = rsync                                   //客户端连备份服务器具备rsync的用户权限
gid = rsync                                   //客户端连备份服务器具备rsync的用户权限
use chroot = no                            //程序出现bug会定向为一个空目录,安全方面。
max connections = 2000            //客户端连接数。一般设置大于连接数。
timeout = 600                             //设置客户端连接超时600秒,超时剔除。
pid file = /var/run/rsyncd.pid       //pid进程号
lock file = /var/run/rsync.lock     //锁文件
log file = /var/log/rsyncd.log      //rsync日志文件
ignore errors                            //忽略错误
read only = false                     //只读,true为可读写
list = false                                                   //可以远程列表
hosts allow = 192.168.43.0/24                 //允许什么网段访问
hosts deny = 0.0.0.0/32                            //一般局域网不用,公网可能用,但一般用vpn
auth users = rsync_backup                       //认证用户名,远程连接的用户。
secrets file = /etc/rsync.password             //存放用户和密码的文件,远程用户的密码
#####################################
[backup]                                                   //共享模块调用path服务
comment = backup server by bqhboy 21:40 2018-12-05
path = /backup                                        //共享目录地址

②创建一个虚拟用户:

useradd rysnc –s /sbin/nologin –M

③创建共享目录及属主:
mkdir /backup

chown –R rsync /backup

④给虚拟用户名设置密码并存放文件中: 
echo “rsync_backup:bqh123” >/etc/rsync.password

⑤给服务端虚拟用户密码文件设置权限:
chmod 600 /etc/rsync.password

⑥启动服务:rsync --daemon

查看服务:ss -lntup|grep rsync 
                netstat -lntup|grep rsync
                ps -ef|grep rsync|grep -v grep
                lsof -i :873

⑦加入开机自启动:

echo "rsync --daemon" >>/etc/rc.local
cat /etc/rc.local

客户端1配置如下:

①创建密码文件
echo "bqh123" >/etc/rsync.password
cat /etc/rsync.password
chmod 600 /etc/rsync.password
ll /etc/rsync.password

②rsync

Push: 
rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

将客户端1/tmp/目录下所有文件推送到服务端/backup/目录下:

rsync -avz /tmp/ rsync_backup@192.168.43.200::backup --password-file=/etc/rsync.password

从服务端backup目录下所有增量文件拉拽到客户端端/tmp/目录下:

在服务端/backup/下新建一个增量文件4.txt

rsync -avz rsync://rsync_backup@192.168.43.200/backup /tmp/ --password
-file=/etc/rsync.password

如果想每次访问用密码去掉  --password-file=/etc/rsync.password

③echo $?   //如果结果为0的话正确。

客户端2配置同客户端1(...具体略)

客户端rsync同步排除文件参数: --exclude

排除多个文件:

--exclude={a,b,c}

--exclude={a..c}

--exclued-from=paichu.log

--exclude=a  --exclude=b  --exclude=c

例如:

将客户端2/tmp/目录下所有文件(排除123.txt)推送到服务端/backup/目录下:

在服务端查看推送的文件如下:

-----------------------------------------------------------------------------------------------

无差异同步:  --delete  尽量不用此参数。

推送:本地有,远端就有;本地没有,删除远端独有的。备份远端数据

拉取:远端有,本地就有;远端没有,删除本地独有的。备份本地数据。

Rsync优点:

增量备份同步,支持socket(daemon模式),集中备份

Rsync缺点:

1.大量小文件时候同步的时候,比对时间较长,有的时候,rsync进程停止。

解决:a.打包大量小文件。  b.drbd(文件系统同步复制block)

2. 同步大文件,10G这样的大文件有时候也会有问题,中断,未完整同步前,是隐藏文件。同步完成后改为正常文件。

rsync 数据同步的更多相关文章

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

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

  2. Rsync数据同步工具

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

  3. Rsync数据同步服务

    Rsync数据同步服务 Rsync软件适用与unix/linux/windows等多种操作系统平台 Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具,可以实 ...

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

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

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

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

  6. rsync数据同步备份

    一.rsync简介 (1)rsync是什么? rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. (2)rsync作用比较 远程拷贝:有点类似ssh的scp ...

  7. 搭建中小规模集群之rsync数据同步备份

    NFS重要问题 1.有关NFS客户端普通用户写NFS的问题. 1)为什么要普通用户写NFS. 2)exports加all_squash. Rsync介绍 什么是Rsync? Rsync是一款开源的.快 ...

  8. Rsync数据同步应用指南

    1.软件简介 Rsync 是一个本地或远程数据同步工具,基于RSync算法,这个算法是澳大利亚人Andrew Tridgell发明的:可通过 LAN/WAN 快速同步多台主机间的文件.Rsync 本来 ...

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

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

随机推荐

  1. EOS 理解

    1.通过石墨烯技术来解决延迟和吞吐量. 2.账户体系:账户是可读的唯一标识符,不是地址.可包含多对公私钥.账户有权限规划.权限有阈值,公私钥有权重,公私钥的权重大于等于阀值才能拥有该权限进行相应操作. ...

  2. redis学习(二) redis数据结构介绍以及常用命令

    redis数据结构介绍 我们已经知道redis是一个基于key-value数据存储的数据结构数据库,这里的key指的是string类型,而对应的value则可以是多样的数据结构.其中包括下面五种类型: ...

  3. tar 压缩解压

     tar命令 tar可以为文件和目录创建档案.利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件, 或者向档案中加入新的文件.tar最初被用来在磁带上创建档案,现在,用户可 ...

  4. angular enter事件,angular回车事件

    angular回车键搜索,angular enter搜索 对于搜索框,用户在输入内容后的搜索习惯不是鼠标点击搜索按钮,而是直接按enter键,那我们怎么给enter键绑定事件呢,其实很简单,代码如下: ...

  5. php和mysql学习问题笔记

    1.Undefined index: pwd in E:\xampp\htdocs\phpbase2elite\12\source\register.php on line 6 这是一个警告,表示数组 ...

  6. Windows服务设置

    [服务列表]services.msc [注册服务] 描述:在注册表和服务数据库中创建服务项. 用法:sc <server> create [service name] [binPath= ...

  7. nodejs 的序列化与反序列化

    1.序列化 stringify函数的作用就是序列化对象,也就是说将对象类型转换成一个字符串类型(默认的分割符("&")和分配符("=")),先介绍它的基 ...

  8. RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列

    一.理论: .net环境下,C#代码调用RabbitMQ消息队列,本文用easynetq开源的.net Rabbitmq api来实现. EasyNetQ 是一个易于使用的RabbitMQ的.Net客 ...

  9. ImageButton设置src图片大小

    需求&起因 有时候没有找到合适大小的资源,需要修改图片大小而且不改变ImageButton的大小.可以通过缩放图片大小的方式改变外观. ImageView的属性android:scaleTyp ...

  10. A simple Gaussian elimination problem.(hdu4975)网络流+最大流

    A simple Gaussian elimination problem. Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65 ...