rsync + inotify 实现文件实时双向自动同步,Python项目开发案例集锦文件

-v :展示详细的同步信息

-a :归档模式,相当于 -rlptgoD

-r :递归目录

-l :同步软连接文件

-p :保留权限

-t :将源文件的"modify time"同步到目标机器

-g :保持文件属组

-o :保持文件属主

-D :和–devices --specials一样,保持设备文件和特殊文件

-z :发送数据前,先压缩再传输

-H :保持硬链接

-n :进行试运行,不作任何更改

-P same as --partial --progress

–partial :支持断点续传

–progress :展示传输的进度

–delete :如果源文件消失,目标文件也会被删除

–delete-excluded :指定要在目的端删除的文件

–delete-after :默认情况下,rsync是先清理目的端的文件再开始数据同步;如果使用此选项,则rsync会先进行数据同步,都完成后再删除那些需要清理的文件。

–exclude=PATTERN :排除匹配PATTERN的文件

–exclude-from=FILE :如果要排除的文件很多,可以统一写在某一文件中

-e ssh :使用SSH加密隧道传输

部署使用

  • 服务器A: 192.168.0.1

  • 服务器B: 192.168.0.2

这里有两台 linux 服务器,我们可以先假定 A 作为服务端,B 作为客户端。

1、服务端配置:

修改服务端的配置文件:/etc/rsyncd.conf,内容如下:

rsync 守护进程的用户

uid = www

运行 rsync 守护进程的组

gid = www

允许 chroot,提升安全性,客户端连接模块,首先 chroot 到模块 path 参数指定的目录下,chroot 为 yes 时必须使用 root 权限,且不能备份 path 路径外的链接文件

use chroot = yes

只读

read only = no

只写

write only = no

设定白名单,可以指定IP段(172.18.50.1/255.255.255.0),各个Ip段用空格分开

hosts allow = 192.168.0.2

hosts deny = *

允许的客户端最大连接数

max connections = 4

欢迎文件的路径,非必须

motd file = /etc/rsyncd.motd

pid文件路径

pid file = /var/run/rsyncd.pid

记录传输文件日志

transfer logging = yes

日志文件格式

log format = %t %a %m %f %b

指定日志文件

log file = /var/log/rsync.log

剔除某些文件或目录,不同步

exclude = lost+found/

设置超时时间

timeout = 900

ignore nonreadable = yes

设置不需要压缩的文件

dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

模块,可以配置多个

[sync_file]

模块的根目录,同步目录,要注意权限

path = /home/test

是否允许列出模块内容

list = no

忽略错误

ignore errors

添加注释

comment = ftp export area

模块验证的用户名称,可使用空格或者逗号隔开多个用户名

auth users = sync

模块验证密码文件 可放在全局配置里

secrets file = /etc/rsyncd.secrets

编辑 /etc/rsyncd.secrets 文件,内容如下:

rsyncd.secrets 文件的配置

用户名:密码

sync:123456

编辑 /etc/rsyncd.motd 文件,内容如下:

rsyncd.motd 文件配置

++++++++++++++++++

sync zhang : rsync start

++++++++++++++++++

设置文件权限,这一步不能少:

chmod 600 /etc/rsyncd.secrets

启动:

rsync --daemon --config=/etc/rsyncd.conf

加入开机自启:

echo ‘rsync --daemon --config=/etc/rsyncd.conf’ >> /etc/rc.d/rc.local

2、客户端配置:

创建密码文件 /etc/rsyncd.pass,直接写密码即可,内容如下:

rsyncd.pass 文件的配置

123456

设置文件权限,这一步不能少:

chmod 600 /etc/rsyncd.pass

现在就可以在客户端执行命令来同步文件了。

从 服务端=>客户端 同步数据:

rsync -avzP --delete sync@192.168.0.1::sync_file /home/test --password-file=/etc/rsyncd.pass

从 客户端=>服务端 同步数据:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:**

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-6UK3lqcS-1712715523988)]

  • 24
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现实时同步,可以结合使用rsyncinotify工具。 首先,使用rsync命令进行初始的文件同步。你可以使用如下命令: ``` rsync -avz --delete source_directory/ destination_directory/ ``` 这将同步源目录(source_directory)中的文件到目标目录(destination_directory)。-a`选项表示使用归档模式,保持文件属性和权限不变。`-v`选项表示输出详细的同步信息。`-z`选项表示启用压缩来加快传输速度。`--delete`选项表示删除目标目录中不存在于源目录中的文件。 接下来,你可以使用inotify工具监控源目录的文件变化,并在有变更时自动触发rsync命令进行实时同步inotify是Linux内核提供的一种机制,可以监视文件系统中的事件,如文件或目录的创建、修改、删除等。 你可以使用inotifywait命令来监控文件系统事件,并在事件发生时执行rsync命令。以下是一个示例: ``` #!/bin/bash SOURCE_DIR="/path/to/source_directory" DESTINATION_DIR="/path/to/destination_directory" inotifywait -m -r -e modify,create,delete,move "$SOURCE_DIR" | while read path action file; do rsync -avz --delete "$SOURCE_DIR/" "$DESTINATION_DIR/" done ``` 上述脚本监视源目录中的修改、创建、删除和移动事件,并在事件发生时执行rsync命令进行同步。你可以将脚本保存为一个.sh文件,并使用`chmod +x script.sh`命令赋予执行权限。 这样,当源目录中的文件发生变化时,inotify会捕捉到事件并触发rsync命令进行实时同步到目标目录。 请注意,以上示例仅为演示目的,并没有考虑到错误处理、日志记录等方面。在实际应用中,你可能需要对脚本进行适当的修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值