命令:rsync负责数据同步的的命令,可以从本地到本地进行同步,也可以实现远程同步。本地同步实现本地的两个目录同步。远程同步包括两种方式:可以通过ssh利用远程shell脚本完成同步,也可以利用rsync进程自身完成,远程同步包含两种方向,Pull和Push。其中Pull是从远程拉取到本地,Push是从本地推送到远程。
基本命令格式为:
rsync [options] src dest
其中src为源地址,dest为目的地址,以下目录中都以黄色标记源地址,绿色标记目的地址。
一、本地同步
rsync [OPTION...] SRC... [DEST]
从本地的SRC目录中同步数据到本地DEST目录,如果缺失表示同步数据到当前Shell工作目录。
二、通过远程shell完成同步
1. Pull
rsync [OPTION...] [USR@]HOST:SRC... [DEST]
2. Push
rsync [OPTION...] SRC... [USER@]HOST:DEST
解释:
通过远程Shell完成同步,src和dest地址中有且只有一个为远程地址,另一个地址为本地地址。远程地址形式为[USR@]HOST:ADDR表示远程地址。其中USR@可选,HOST必选(表示远程主机地址),HOST和ADDR之间用单个冒号":"隔开表示的是通过远程shell同步。其中ADDR表示的是源或者目标主机上的目录地址。
1)如果src为该类型地址,那么dest则是本地地址(可选),则表示利用远程(HOST含义)shell(冒号含义)同步数据到本地dest(或者shell工作目录),则是Pull(拉取)。
2)如果src为本地地址,dest为该类型地址,则是表示从本地src推送数据到远程(HOST含义),利用shell(冒号)完成数据推送,则是Push(推送)。
三、通过rsync进程来实现同步
1. Pull
rsync [OPTION...] [USR@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USR@]HOST[:PORT]/SRC... [DEST]
2.Push
rsync [OPTION...] SRC... [USR@]HOST::[DEST]
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
解释:
通过rsync进程本身来实现同步数据,src和dest中有且只有一个为远程地址,另一个为本地地址。远程地址格式包含两种格式:
1)[USR@]HOST::ADDR
2) rsync://[USR@]HOST[:PORT]/ADDR
HOST都是表示了远程地址,第一种格式用双冒号"::"表示是利用rsync进程自身完成同步,区别了单冒号":"。第二种格式类似于URL的方式,在[:PORT]中设定端口。ADDR都是目录地址。
1)同样如果src地址为远程地址(两种格式的一种),dest为目标地址,同步远程到本地。表示Pull拉取。
2)如果src是本地地址,dest为远程地址,同步本地到远程。则表示Push(推送)。
四、总结:
rsync指令根据地址中有误远程地址分为本地同步和远程同步两种。其中远程同步src和dest中一个为远程地址,一个为本地地址。在远程同步中,按照远程地址的类型分为三种:
1)[USR@]HOST:ADDR
2) [USR@]HOST::ADDR
3) rsync://[USR@]HOST[:PORT]
。地址中都包含HOST字段,表示是远程地址。远程同步可以从两个维度划分:
1. 按照同步方式(手段)划分:
前面三种远程地址,第一种表示通过远程shell完成同步(单个冒号区分),后面两种表示利用rsync进程自身来实现同步(通过双冒号区分、通过URL地址区分)。
2. 按照同步类型划分:
如果src是远程地址,则是Pull(拉取),如果dest是远程地址则Push(推送)。