rsync同步操作(本地与远程)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync同步操作(本地与远程)相关的知识,希望对你有一定的参考价值。

最近好几个小伙伴一直在问蜜蜂同步与复制的事。甚至很多刚接触linux的小伙伴都分不清同步、复制、共享目录等之间的关系。

其实平时使用的话复制和另外两者还是很好区分的。

复制:就是将源文件原原本本的拷贝到目标目录。

共享:一般是提供服务的机器提供共享目录(文件夹),而客户机可以挂载该目录(文件夹)而达到数据共享。

同步:只拷贝变化了的数据,也可以理解为增量拷贝。

1.rsync 

-a 保持基本所属关系不变(归档模式)

-v  显示详细信息

-X 保持acl策略不变

2.演示:新建两个目录dir1、dir2,在dir1里创建一个文件

[root@server ~]# mkdir /dir1

[root@server ~]# mkdir /dir2

[root@server ~]# touch /dir1/dir1.txt

[root@server ~]# ls /dir1/dir1.txt  

/dir1/dir1.txt

[root@server ~]# ls /dir1/ #dir1目录下有文件

dir1.txt

[root@server ~]# ls /dir2/  #dir2目录下没有文件

rsync同步操作(本地与远程)_本地同步

3.数据同步

[root@server ~]# rsync -avX /dir1/   /dir2  

sending incremental file list

./

dir1.txt


sent 185 bytes  received 40 bytes  450.00 bytes/sec

total size is 0  speedup is 0.00

[root@server ~]# ^C

[root@server ~]# ls /dir2

dir1.txt

[root@server ~]# 

rsync同步操作(本地与远程)_本地同步_02

不过这样就有个问题了,在后面这个目录里增加文件后,再同步并不会删除目标目录的文件,严格来说此时两个目录中的数据已经不同步了

[root@server ~]# touch /dir1/a.txt 

​[root@server ~]# ls /dir2

dir1.txt

[root@server ~]# cd /dir2

[root@server dir2]# ls

dir1.txt

[root@server dir2]# touch aaa1..3

[root@server dir2]# ls

aaa1  aaa2  aaa3  dir1.txt

[root@server dir2]# rsync -avX /dir1/   /dir2  

sending incremental file list

./

a.txt


sent 210 bytes  received 40 bytes  500.00 bytes/sec

total size is 0  speedup is 0.00

[root@server dir2]# ls

aaa1  aaa2  aaa3  a.txt  dir1.txt

rsync同步操作(本地与远程)_rsync_03

加一个--delete选项解决此问题

[root@server dir2]# rsync -avX  --delete /dir1/   /dir2 

rsync同步操作(本地与远程)_rsync_04

3.远程同步

[root@server dir2]# rsync -avX --delete /dir1/   root@192.168.88.3:/opt

sending incremental file list

deleting rh/

./

a.txt

dir1.txt


sent 255 bytes  received 68 bytes  43.07 bytes/sec

total size is 0  speedup is 0.00

rsync同步操作(本地与远程)_rsync_05

查看192.168.88.3已同步

rsync同步操作(本地与远程)_网路同步_06

4.以上确实已经同步数据,但不实时,要想实时同步的话就得监控目录内容变化然后同步

rsync同步操作(本地与远程)_本地同步_07

可以先装一个工具:inotify-tools-3.13.tar.gz

这里源码编译安装

rsync同步操作(本地与远程)_共享目录_08

可以用/opt/myrpm/bin/inotifywait  -rq /dir1来监控

[root@server inotify-tools-3.13]# /opt/myrpm/bin/inotifywait  -rq /dir1

rsync同步操作(本地与远程)_网路同步_09

之后我们就可以把上面两步结合起来(写个脚本)实现

1.创建文件,写入内容(qq:没有屏幕输出)

[root@server inotify-tools-3.13]# vim /etc/rsync.sh

while /opt/myrpm/bin/inotifywait -rqq /dir1

do

 rsync -aX --delete /dir1/ root@192.168.88.3:/mnt

done

rsync同步操作(本地与远程)_共享目录_10

运行脚本

rsync同步操作(本地与远程)_本地同步_11

之后修改dir1里面得文件就会自动同步了

rsync同步操作(本地与远程)_rsync_12

rsync同步操作(本地与远程)_本地同步_13


以上是关于rsync同步操作(本地与远程)的主要内容,如果未能解决你的问题,请参考以下文章

rsync远程同步——(实战!)

rsync远程同步(理论+实战)

rsync远程同步(理论+实践篇)

rsync 远程同步

rsync远程同步

rsync 远程文件同步+实验