Linux系统下数据同步服务RSYNC(第九天)

一、RSYNC概述

1、什么是rsync

(1)rsync的类型:

sync同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级快

async异步:将数据先放到缓冲区,在周期性(一般是30s)的去同步到磁盘

rsync远程同步:==remote  synchronous==

(2)数据同步过程:

sync数据同步 ==》保存文件(目标)==》强制把缓存中的数据写入磁盘(立即保存),实时性要求比较高的场景

async数据异步==》保存文件(目标)==》将数据先放到缓冲区,在周期性(一般是30s)的去同步到磁盘,适合大批量数据同步的场景

2、rsync的特点

(1)可以镜像保存整个目录树和文件系统

(2)可以保留原有的权限(permission.mode),owner,group,时间(修改时间,modify  time),软硬链接,文件acl,文件属性(attributes)信息等

(3)传输==效率高==,使用同步算法,只比较变化的(增量备份)

          file1.txt,file2.txt,file3.txt(A服务器)

          rsync实现数据同步  ==》  只同步file3.txt  ==》 增量备份

          file1.txt file2.txt(B服务器)

(4)支持匿名传输,方便网站镜像;也可以做验证,加强安全

3、rsync与scp的区别

两者都可以实现远程同步,但是相对比而言,rsync能力更强

(1)支持增量备份

(2)数据同步时保持文件的原有属性

二、RSYNC的使用

(一)本地同步

1、查看是否有rsync

[root@oneday ~]# rpm -aq | grep rsync

[root@oneday ~]# yum list installed|grep rsync

2、安装rsync

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

[root@oneday ~]# find / -name "*rsync"

PUSH:推—相当于上传

PULL :拉—相当于下载

3、在家目录中创建一些文件,将文件同步到opt下

[root@oneday ~]# cd

[root@oneday ~]# mkdir folder

[root@oneday ~]# mkdir folder/{1..3}

[root@oneday ~]# tree folder/

[root@oneday ~]# touch folder/1/file{0..4}

[root@oneday ~]# tree folder

4、将folder目录下的文件传递到opt

[root@oneday ~]# rsync -av folder/ /opt/

[root@oneday ~]# ls /opt/

[root@oneday ~]# rm /opt/* -rf

[root@oneday ~]# ls -l /opt/

总用量 0

[root@oneday ~]# rsync -avR folder/ /opt/

[root@oneday ~]# tree /opt

(二)远程同步

1、rsync [选项]  原数据位置  目录位置

(1)文件的增加会同步

(2)文件的修改也会被rsync同步

(3)同步文件内容的修改,文件的删除,以及文件的属性的修改

2、向另外一台主机 /tmp目录同步数据

给另外一台主机安装rsync

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

[root@oneday ~]# rsync -av folder/ root@192.168.1.15:/tmp/

(要实现远程同步,两台主机都得要安装rsync)

免密设置

[root@oneday ~]# ssh-keygen

一直按回车

[root@oneday ~]# ssh-copy-id root@192.168.1.15

3、从远程主机拉取数据

[root@oneday ~]# rsync -av root@192.168.1.15:/tmp/jiajiwenjian /tmp/

[root@oneday ~]# ls /tmp

三、rsync作为系统服务

1、启动rsync

[root@oneday ~]# systemctl status rsyncd    #查看rsync的状态(是否启动)

● rsyncd.service - fast remote file copy program daemon

   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; vendor preset: disabled)

   Active: inactive (dead)

[root@oneday ~]# systemctl start rsyncd   #启动rsync

[root@oneday ~]# netstat -lntup|grep rsync    #查看rsync状态

tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      5952/rsync          

tcp6       0      0 :::873                  :::*                    LISTEN      5952/rsync    

2、找服务配置文件,把rsync作为系统服务运行

[root@oneday ~]# find / -name "rsync*conf"

/etc/rsyncd.conf

[root@oneday ~]# mkdir -p /app/studentweb/src/main/java/co/goho/yuanyu.studentweb/

[root@oneday ~]# tree /app/

/app/

└── studentweb

    └── src

        └── main

            └── java

                └── co

                    └── goho

                        └── yuanyu.studentweb

[root@oneday ~]# touch /app/studentweb/src/main/java/co/goho/yuanyu.studentweb/File

{0..9}.java

[root@oneday ~]# tree /app/

/app/

└── studentweb

    └── src

        └── main

            └── java

                └── co

                    └── goho

                        └── yuanyu.studentweb

                            ├── File0.java

                            ├── File1.java

                            ├── File2.java

                            ├── File3.java

                            ├── File4.java

                            ├── File5.java

                            ├── File6.java

                            ├── File7.java

                            ├── File8.java

                            └── File9.java

[root@oneday studentweb]# vim /etc/rsyncd.conf

[app]

path=/app/studentweb/

log file=/var/log/rsync.log

[root@oneday studentweb]# systemctl restart rsyncd

在oneday主机中提供了一个针对app/下的项目rsync服务,下次访问直接找服务

[root@twoday ~]# rsync -a root@192.168.1.25::

app

[root@twoday ~]# rsync -av root@192.168.1.25::app /tmp/

[root@twoday ~]# ls -l /tmp/

总用量 307200

drwxr-xr-x. 2 root root        84 7月  18 10:38 1

drwxr-xr-x. 3 root root        80 7月  18 10:39 2

drwxr-xr-x. 2 root root         6 7月  18 10:11 3

-rw-r--r--. 1 root root 314572800 7月  18 19:04 jiajiwenjian

drwxr-xr-x. 3 root root        18 7月  18 11:28 src

drwx------. 3 root root        17 7月  18 18:42 systemd-private-6d1e4e5be65247abaab05a8a32bb9ea5-chronyd.service-D8s1hP

drwx------. 3 root root        17 7月  17 19:28 systemd-private-bf4b814dd90745e98a674570ad50f42a-chronyd.service-aQMkOL

drwx------. 2 root root         6 7月  17 19:28 vmware-root

[root@twoday ~]# tree /tmp/src

/tmp/src

└── main

    └── java

        └── co

            └── goho

                └── yuanyu.studentweb

                    ├── File0.java

                    ├── File1.java

                    ├── File2.java

                    ├── File3.java

                    ├── File4.java

                    ├── File5.java

                    ├── File6.java

                    ├── File7.java

                    ├── File8.java

                    └── File9.java

twoday不需要启动rsyncd服务

四、自动化推送拉取文件

1、设置每60s推送一次代码

编辑计划任务

找到rsync的which地址

[root@oneday ~]# which rsync

/usr/bin/rsync

[root@oneday ~]# crontab -e

*/1 * * * * /usr/bin/rsync -av /app/studentweb/ root@192.168.1.15:/tmp/     #设置一分钟自动更新

2、为rsync服务添加密码

(1)编辑vim /etc/rsync.conf

(2)添加两个属性

         auth users=user0,user1     #添加账号文件的路径

         secrets file=/etc/rsync.secrets     #添加密码文件的路径

具体操作:

[root@oneday ~]# vim /etc/rsyncd.conf

[efg]

path=/app/studentweb/

log file=/var/log/rsync.log

auth users=zhangsan,lisi

secrets file=/etc/rsync.secrets

[root@oneday ~]# vim /etc/rsync.secrets  #编辑rsync密码

tom:tom

jerry:jerry

必须为/etc/rsync.secrets文件设置权限

[root@oneday ~]# chmod 600 /etc/rsync.secrets      #设置权限

[root@oneday ~]# systemctl restart rsyncd

[root@twoday ~]# rsync -av tom@192.168.1.25::efg /tmp/

Password:

receiving incremental file list

./

src/

src/main/

src/main/java/

src/main/java/co/

src/main/java/co/goho/

src/main/java/co/goho/yuanyu.studentweb/

src/main/java/co/goho/yuanyu.studentweb/File0.java

src/main/java/co/goho/yuanyu.studentweb/File1.java

src/main/java/co/goho/yuanyu.studentweb/File2.java

src/main/java/co/goho/yuanyu.studentweb/File3.java

src/main/java/co/goho/yuanyu.studentweb/File4.java

src/main/java/co/goho/yuanyu.studentweb/File5.java

src/main/java/co/goho/yuanyu.studentweb/File6.java

src/main/java/co/goho/yuanyu.studentweb/File7.java

src/main/java/co/goho/yuanyu.studentweb/File8.java

src/main/java/co/goho/yuanyu.studentweb/File9.java

五、实现代码实时同步(重点)

1、直接安装inotify-tools

[root@oneday ~]# yum -y install inotify-tools

(监听指定的目录,一旦目录发出修改,就执行指定的指令)

[root@oneday ~]# inotifywait -mr /app/     #开始监听

(一旦inotifywait监听到目录中的改变,)

2、编写inotify.sh

[root@oneday ~]# vim inotify.sh

[root@oneday ~]# chmod 700 inotify.sh

[root@oneday ~]# ./inotify.sh

另外开个窗口测试

[root@oneday ~]# touch /app/studentweb/打瞌睡了

[root@oneday ~]# touch /app/studentweb/想放屁

[root@oneday ~]# nohup ./inotify.sh &    #后台执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值