rsync

rsync与inotify

【1】、rsync同步操作

应用场景(业务场景) 应用建议
rsync作为命令使用 临时拉取,推送数据。未来这和需求可以通过scp命令实现
定时备份:rsync服务+定时任务 定时备份,定期备份(定时任务进行备份+通过rsync传输备份)
实时同步:rsync服务+sersync/lsyncd是先试试吧同步 解决存储服务单点问题
rsync服务与异地容灾 找一个异地的服务器存放备份
  • 命令用法

    • -rsync [选项] 源目录 目标目录
    • 5G左右的数据用拷贝,更大的用rsync
  • 同步与复制的差距

    • 复制:完全拷贝源到目标
    • 同步:增量拷贝,只传输变化的数据
rsync选项 含义
-a -rlptgoD
-r:递归复制
-l:复制软连接
-p:保持权限不变
-m:保持修改时间不变
-o:所有者不变
-g:用户组不变
-D:--devices --specials 设备与特殊文件
-v 显示过程
-z 传输数据的时候进行压缩(公网)
-P 在传输过程中显示更加详细的信息
--bwlimit 不要与-z一起使用,限制传输时的速度,一般在公网传输的时候使用,避免占据大量的带宽
--exclude 在数据传输时排除哪些内容
--delete 保持源与目标数据一致
-X 保持同步前后ACL权限
-n 测试同步过程,不做实际修改
[root@moudle01 09:23:10  ~]# mkdir /aaa
[root@moudle01 09:23:20  ~]# mkdir /bbb
[root@moudle01 09:23:23  ~]# touch /aaa/{1..3}.txt
[root@moudle01 09:23:38  ~]# rsync -avX --delete /aaa/ /bbb
sending incremental file list
./
1.txt
2.txt
3.txt

sent 296 bytes  received 80 bytes  752.00 bytes/sec
total size is 0  speedup is 0.00
[root@moudle01 09:24:04  ~]# ls /bbb
1.txt  2.txt  3.txt
# --delete会保持源目一致,我在/bbb中创建了数据,使用rsync时会自动删除
[root@moudle01 09:24:07  ~]# touch /bbb/123.txt
[root@moudle01 09:24:17  ~]# rsync -avX --delete /aaa/ /bbb
sending incremental file list
deleting 123.txt
./

sent 139 bytes  received 30 bytes  338.00 bytes/sec
total size is 0  speedup is 0.00

【2】、远程同步(rsync+ssh)

  • 与远程的ssh目录保持同步
    • 下行:rsync [..] user@host:远程目录 本地目录
    • 上行:rsync [..] 本地目录 user@host:远程目录
rsync -avX --delete /aaa root@192.168.121.181:/opt

【3】、实时同步

  • 首先要设置ssh免密
  • 通过inotify监控目录内容
    • -m:持续监控(捕获一个事件后不退出)
    • -r:递归监控、包括子目录及文件
    • -q:减少屏幕输出信息
    • -e:指定监控的modify、move、create、delete、attrib等时间类别(不写-e,任何事件都监控)
# 
[root@moudle01 10:26:03  /]# inotifywait -rq /mydir/
/mydir/ CREATE aaa.txt

inotify是用来监视目录的,没有数据同步功能,数据同步是通过rsync实现的

我们只能通过脚本去实现inotify和rsync联动,当inotify监控到数据内容发生变化后,rsync去实现同步操作

#!/bin/bash
while inotifywait -rq /mydir/
do
        rsync -avX --delete /mydir/ root@192.168.121.181:/mnt
done

[root@moudle01 10:45:23  /]# touch /mydir/ssss
/mydir/ CREATE ssss
[root@moudle01 10:45:31  /]# sending incremental file list
./
ssss

sent 277 bytes  received 41 bytes  636.00 bytes/sec
total size is 0  speedup is 0.00

[root@clone-01 10:46:29  ~]# ll /mnt
total 0
-rw-r--r--. 1 root root 0 Jun  7 10:26 aaa.txt
-rw-r--r--. 1 root root 0 Jun  7 10:43 asdasdas
drwxr-xr-x. 2 root root 6 Jun  7 10:41 hahahah
-rw-r--r--. 1 root root 0 Jun  7 10:45 ssss
posted @ 2024-07-10 15:32  Linux小菜鸟  阅读(6)  评论(0编辑  收藏  举报