maodouchen / note

学习笔记
0 stars 0 forks source link

linux-rsync #5

Open maodouchen opened 5 years ago

maodouchen commented 5 years ago

简介:

rysnc的目的是实现本地主机和远程主机上的文件同步(本地推到远程,远程拉到班底两种同步方式) 涉及到了源文件和目标文件的概念,以及以哪边的文件为同步的基准 是否要删除源主机上没有,但是目标主机上多出来的文件。 rsync同步过程中由两部分模式组成,决定哪些文件需要同步的检查模式,文件同步时的同步模式。

  1. 检查模式是指按照规则来检查哪些文件需要被同步 rsync使用‘quick check’的算法,默认情况下快速检查源文件和目标文件的大小,修改时间是否一致,如果不一致则需要传输。也可以通过在rsync命令行中指定某些选项来改变quick check的检查模式,比如--size-only选项标识quick check仅将检查文件的大小不同的文件作为待传输文件。

  2. 同步模式是指文件确定要被同步后,在同步的过程和功能发生之前要做哪些额外的工作 比如上文所说的是否要先删除源主机上没有,但是目标主机上有的文件,是否要先备份已存在的目标文件,是否要追踪链接文件等额外操作。。 一般情况下,会手动指定同步模式,不会手动指定检查模式,因为手动指定检查模式会影响rsync的性能。

rsync的三种工作方式

  1. local

    • rsync options src dest
  2. 通过remote shell权限

    • pull: rsync options user@host:src dest
    • push: rsync options src User@Host:dest
  3. 通过rsync daemon权限

    • push:

      • rsync options src User@host::desc
      • rsync options src rsync://user@host:port /desc
    • pull:

      • rsync options user@host::src dest
      • rsync options rsync://user@host:port/src dest

第一种是本地文件系统实现同步 第二种是本地主机使用远程shell和远程主机实现通信。类似我们登录服务器的方式? 第三种是本地主机通过网络套接字连接主机上的rsync daemon 后面会介绍 还有第四种通过远程shell启动一个临时的rsync daemon,这不同于方式3,不需要远程主机上实现启动rsync服务,而是临时派生出rsync daemon,他是单用途的一次性daemon,仅用于临时读取daemon的配置文件,当此次同步完成时远程shell启动的rsync daemon进程也会自动消失。 我们之前的mks应该使用的是方式3

rsync -a /etc/ /tmp 将etc下的所有目录同步到tmp中
rsync  -a /etc /tmp 将etc下的所有目录包括etc这个目录 同步到tmp中

options

-v 显示同步过程中的所有信息 -a 归档模式 标识传输并保持文件属性 -u 仅在源文件修改时间比目标文件的修改时间新时才拷贝。 ...

rsync daemon

试想,你的机器上有一堆文件需要时不时的同步到众多服务器上,比如a,b,c是专门传输到web服务器上的,def 目录是专门同步到ftp服务器上的,还要对这些目录中的某些文件进行排除,如果通过远程shell的连接方式,无论是使用排除规则还是包含规则,甚至一条条的rsync命令去传输,这都没问题,但是泰国繁琐且每次都要输入同样的命令 很死板,rsync daemon就解决了这类问题,他向外提供服务,这样只要告诉别人的rsync url路径,外人就能想ftp服务器一样获取文件列表,并进行选择性的下载。