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目录下没有文件
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 ~]#
不过这样就有个问题了,在后面这个目录里增加文件后,再同步并不会删除目标目录的文件,严格来说此时两个目录中的数据已经不同步了
[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
加一个--delete选项解决此问题
[root@server dir2]# rsync -avX --delete /dir1/ /dir2
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
查看192.168.88.3已同步
4.以上确实已经同步数据,但不实时,要想实时同步的话就得监控目录内容变化然后同步
可以先装一个工具:inotify-tools-3.13.tar.gz
这里源码编译安装
可以用/opt/myrpm/bin/inotifywait -rq /dir1来监控
[root@server inotify-tools-3.13]# /opt/myrpm/bin/inotifywait -rq /dir1
之后我们就可以把上面两步结合起来(写个脚本)实现
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
运行脚本
之后修改dir1里面得文件就会自动同步了
以上是关于rsync同步操作(本地与远程)的主要内容,如果未能解决你的问题,请参考以下文章