记一次rsync增量同步远程服务器文件
rsync remote shell 增量方式同步数据
rsync同步文件有两种方式,一种是daemon的方式(rsync daemon)另一种方式是通过远程shell方式(rsync remote shell)。
两种方式的区别
daemon方式,这种方式通过TCP方式连接远程rsync daemon,需要使用配置文件,并启用daemon进程。
<code>rsync [OPTION] user@host::src dest rsync [OPTION] src user@host::dest</code>
remote shell方式,这种方式不需要使用配置文件,也不需要daemon进程。
<code>rsync [OPTION] user@host:src dest rsync [OPTION] src user@host:dest</code>
daemon方式太麻烦了,好要去设置配置文件和daemon进程,因此我选用了remote shell方式,就像下面这样去同步:
<code> rsync -avr --delete yanruitao@123.123.123.123:/export/test/htdocs/files/ /export/test/htdocs/files/</code>
其中参数avr --delete分别表示
<code>-a 归档(archive)模式,以递归方式传输文件,并保持文件属性 -v 输出同步的详细信息(verbose) -r 对子目录进行递归模式处理(recursive) --delete 删除源(SRC)中没有目标(DST)中有的文件</code>
如果一切正常的话,当运行上面的同步命令,会提示输入远程机器yanruitao用户的密码(第一次的话会提示是否建立关系(好像是,具体忘了),直接回车就行),执行完之后会按照规则去同步。
但是有个问题,我要添加一个crontab任务,在每天2点钟去增量同步一次,这个时候我不能去输密码,这个时候就得在两台机器上建立信任关系
两台机器之间建立信任关系
在建立信任关系之前先看看基于公钥、私钥的加密和认证
私钥签名过程
下面这张图是盗来的,哈哈,用这张图理解认证过程再合适不过了:
<code>消息-->[私钥]-->签名-->[公钥]-->认证 私钥数字签名,公钥验证</code>
- Alice生成公钥和私钥,并将公钥发送给Bob。
- Alice用自己的私钥生成签名,也就是加密。
- Alice将签名的信息发送给Bob。
- Bob用Alice的公钥进行解密,验证签名真伪。
公钥加密过程
下面这张图也是盗来的(有图就是好理解),下面是Alice通过对称密钥技术发送信息给Bob:
<code>消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息 公钥加密,私钥解密</code>
- Bob生成自己的公钥和私钥,并将公钥发送给Alice。
- Alice用Bob的公钥对信息进行加密。
- Alice将加密后的信息发送给Bob。
- Bob用他的私钥进行解密,得到Alice发送的信息。
建立主机之间的信任关系
了解了上面公钥和私钥的知识,现在我们来在两个主机之间建立信任关系,,,要在101上对100建立信任关系(也就是100登录101的时候不需要输入密码),这个时候就用到了私钥签名的过程:
在yanruitao192.168.1.100的家目录下生成公钥和私钥(已经有的可以忽略)
<code>ssh-keygen -t rsa #执行完之后会在家目录下的.ssh文件夹下生成id_rsa、id_rsa.pub两个文件,后者是公钥。 scp .ssh/id_rsa.pub yanruitao@192.168.1.101:/home/yanruitao/ #scp同样是通过remote shell的方式传送文件,回车之后会提示输入密码,此时 #还未建立信任关系,因此需要输入密码。确认100的公钥发送给101</code>
在yanruitao192.168.1.101的家目录下对yanruitao192.168.1.100建立信任关系
<code>#将刚才传送的100机器的公钥写入101yanruitao及目录下的.ssh/authorized_keys文件 cat id_rsa.pub >> .ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys #至此就在yanruitao@192.168.1.101上对192.168.1.100建立了信任关系</code>
设置crontab
<code>0 */2 * * * rsync yanruitao@192.168.1.101:/export/wwwroot/hotdocs/files/ /export/wwwroot/hotdocs/files/ #设置完成,每天02:00分会执行一次增量同步</code>
遇到的问题
当然了,自己实际操作的时候可能遇到问题,我在弄的时候,两台机器的用户名是不同的,一个yanruitao一个mywife(哈哈,勿笑),在yanruitao对mywife简历信任关系,这个时候就需要重新在mywife家目录下操作上面的建立信任关系步骤。还有一个问题就是,在mywife机器上的/export/wwwroot/htdocs/files/文件夹的所有者一定要是mywife:
<code>#修改文件夹所有者为mywife sudo chown mywife:users /export/wwwroot/htdocs/files/</code>
不然可能会报错(具体错误我忘了,在公司碰到的),虽然好像不影响同步,但是$?会返回23,影响下面的操作,这里也要留意下。
参考文章
http://www.williamlong.info/archives/837.html
http://www.cnblogs.com/ymy124/archive/2012/04/04/2432432.html
http://www.zhihu.com/question/25912483
本文版权归作者iforever()所有,未经作者本人同意禁止任何形式的转载,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
以上就介绍了记一次rsync增量同步远程服务器文件,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

深入解读ReactPHP的非阻塞特性ReactPHP的一段官方介绍引起了不少开发者的疑问:“ReactPHPisnon-blockingbydefault....
