rsync remote shell 增量方式同步数据

rsync同步文件有两种方式,一种是daemon的方式(rsync daemon)另一种方式是通过远程shell方式(rsync remote shell)。

两种方式的区别

daemon方式,这种方式通过TCP方式连接远程rsync daemon,需要使用配置文件,并启用daemon进程。

rsync [OPTION] user@host::src dest
rsync [OPTION] src user@host::dest

remote shell方式,这种方式不需要使用配置文件,也不需要daemon进程。

rsync [OPTION] user@host:src dest
rsync [OPTION] src user@host:dest

daemon方式太麻烦了,好要去设置配置文件和daemon进程,因此我选用了remote shell方式,就像下面这样去同步:

  rsync -avr --delete yanruitao@123.123.123.123:/export/test/htdocs/files/ /export/test/htdocs/files/

其中参数avr --delete分别表示

-a 归档(archive)模式,以递归方式传输文件,并保持文件属性
-v 输出同步的详细信息(verbose)
-r 对子目录进行递归模式处理(recursive)
--delete 删除源(SRC)中没有目标(DST)中有的文件

如果一切正常的话,当运行上面的同步命令,会提示输入远程机器yanruitao用户的密码(第一次的话会提示是否建立关系(好像是,具体忘了),直接回车就行),执行完之后会按照规则去同步。

但是有个问题,我要添加一个crontab任务,在每天2点钟去增量同步一次,这个时候我不能去输密码,这个时候就得在两台机器上建立信任关系

两台机器之间建立信任关系

在建立信任关系之前先看看基于公钥、私钥的加密和认证

私钥签名过程

下面这张图是盗来的,哈哈,用这张图理解认证过程再合适不过了:

消息-->[私钥]-->签名-->[公钥]-->认证
私钥数字签名,公钥验证
  1. Alice生成公钥和私钥,并将公钥发送给Bob。
  2. Alice用自己的私钥生成签名,也就是加密。
  3. Alice将签名的信息发送给Bob。
  4. Bob用Alice的公钥进行解密,验证签名真伪。

公钥加密过程

下面这张图也是盗来的(有图就是好理解),下面是Alice通过对称密钥技术发送信息给Bob:

消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息
公钥加密,私钥解密
  1. Bob生成自己的公钥和私钥,并将公钥发送给Alice。
  2. Alice用Bob的公钥对信息进行加密。
  3. Alice将加密后的信息发送给Bob。
  4. Bob用他的私钥进行解密,得到Alice发送的信息。

建立主机之间的信任关系

了解了上面公钥和私钥的知识,现在我们来在两个主机之间建立信任关系,假设有两台机器yanruitao@192.168.1.100,yanruitao@192.168.1.101,要在101上对100建立信任关系(也就是100登录101的时候不需要输入密码),这个时候就用到了私钥签名的过程:

在yanruitao192.168.1.100的家目录下生成公钥和私钥(已经有的可以忽略)
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
在yanruitao192.168.1.101的家目录下对yanruitao192.168.1.100建立信任关系
#将刚才传送的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建立了信任关系
设置crontab
0 */2 * * * rsync yanruitao@192.168.1.101:/export/wwwroot/hotdocs/files/ /export/wwwroot/hotdocs/files/
#设置完成,每天02:00分会执行一次增量同步
遇到的问题

当然了,自己实际操作的时候可能遇到问题,我在弄的时候,两台机器的用户名是不同的,一个yanruitao一个mywife(哈哈,勿笑),在yanruitao对mywife简历信任关系,这个时候就需要重新在mywife家目录下操作上面的建立信任关系步骤。还有一个问题就是,在mywife机器上的/export/wwwroot/htdocs/files/文件夹的所有者一定要是mywife:

#修改文件夹所有者为mywife
sudo chown mywife:users /export/wwwroot/htdocs/files/

不然可能会报错(具体错误我忘了,在公司碰到的),虽然好像不影响同步,但是$?会返回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(luluyrt@163.com)所有,未经作者本人同意禁止任何形式的转载,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

记一次rsync增量同步远程服务器文件的更多相关文章

  1. Pycharm同步远程服务器调试

    Pycharm同步远程服务器调试 1.需要准备工具 xftp:上传项目文件 xshell:连接Linux系统调试,执行命令 PyCharm:调试python代码 这些软件可以自行网上搜索下载,也可以关 ...

  2. 在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件

    在 Sublime Text 2 中使用 SFTP 插件快速编辑远程服务器文件 开源程序 浏览:29555 2013年05月02日 文章目录[隐藏] 常见的工作流程 SFTP 安装和使用方法 第一步: ...

  3. JCIFS读取远程服务器文件过慢的解决方法

    JCIFS读取远程服务器文件过慢的解决方法 发表于3年前(2013-07-12 11:23)   阅读(1174) | 评论(0) // 我要收藏"; var favor_del = &qu ...

  4. java使用sftp下载远程服务器文件

    使用的是springboot的项目,只是贴出主要配置与类,代码较长,可以先折叠: 参考:https://www.cnblogs.com/xyzq/p/7049369.html 操作工具类SftpUti ...

  5. 本地VSCode编辑远程服务器文件

    前言 先说下我的场景:服务器搭设了一系列复杂环境,然后需要使用PHP实现某些功能 选这种远程编辑的原因: 首先PHP打死我也不想装(这个现在是出了VB外最惹人厌的语言了) 然后环境比较复杂,本地装下比 ...

  6. #在windows上使用ngix重定向目录访问远程服务器文件详细实例

    为了在开发环境保持于生产环境相同的访问远程服务器文件资源的目录配置,需要在开发环境(windows)在远程文件服务器使用nignx重定向文件目录,因为网上的资料大都是copy的,解释比较笼统,也没有具 ...

  7. puppet使用rsync模块同步目录和文件

    puppet使用rsync模块同步目录和文件 2013-09-23 14:28:57 分类: LINUX 环境说明: OS :    CentOS5.4                         ...

  8. linux 同步 rsync的使用——远程服务器同步配置

    一.背景介绍 由于需要和其他系统进行对接.文件的逻辑地址通过接口传递,而文件的实体需要通过服务器间的同步进行传输.在同事的建议下选择了rsync. 二.RSYNC介绍 RSYNC 有多种方式进行同步, ...

  9. Centos 6.5 rsync+inotify 两台服务器文件实时同步

    rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...

随机推荐

  1. JAVA_HOME环境变量失效的解决办法

    晚上把oracle自带的weblogic给卸载了,然后打开eclipse,发现报错了:Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg' JA ...

  2. Autofac中的属性注入功能使用

    使用依赖注入容器时,大部分都是使用构造函数来注入或者是xml配置文件.也有很多支持属性注入.Autofac就是其中一个. 1 为什么要有属性注入? 对于一些使用特频繁的类或者方法,很多类都会用到,那么 ...

  3. 翻译qmake文档(三) Creating Project Files

    翻译qmake文档 目录   原英文文档:http://qt-project.org/doc/qt-5/qmake-project-files.html   创建项目文件 项目文件包含qmake构建你 ...

  4. c++返回值 注意事项

    1.不要返回指向局部变量或临时对象的引用.函数执行完毕后,局部变量和临时对象会消失,引用将指向不存在的数据 2.返回指向const对象的引用 使用const引用的常见原因是旨在提高效率,但对于何时采用 ...

  5. 打字机游戏Ⅱ之手速pk

    前言 demo预览->typewriter gameⅡ (chrome only 没做兼容) 别看一开始时速度不快,会线性增长的哦,反正楼主的score还没达到过40... 为什么叫Ⅱ呢?之前写 ...

  6. 阿里云Ubuntu 14.04 + Nginx + let's encrypt 搭建https访问

    参考页面: https://certbot.eff.org/#ubuntutrusty-nginx http://bbs.qcloud.com/thread-12059-1-1.html http:/ ...

  7. 学习SQLite之路(四)

    20160621 更新 参考: http://www.runoob.com/sqlite/sqlite-tutorial.html 1. SQLite   alter命令:不通过执行一个完整的转储和数 ...

  8. get_post

    各种http的请求协议: http://ymiter.iteye.com/blog/1922464 HTTP请求报文和HTTP响应报文 http://www.cnblogs.com/biyeymyhj ...

  9. Ubuntu backlight

    我们可以通过键盘来调节亮度,但是那样亮度无法微调,每次变亮变得太多. 在 /sys/class/backlight/nv_backlight 这个目录下,brightness 是最主要的.backli ...

  10. Ubuntu安装出现左上角光标一直闪解决方式

    Ubuntu安装出现左上角光标一直闪解决方式: 01下载ubunu http://cn.ubuntu.com/download/ 02.软碟通 http://pan.baidu.com/s/1qY8O ...