wiseMale 2020-05-31
开源、高速的数据同步工具。
基本语法格式:rsync [选项] 源文件 目标文件 (更新的是后面的目标文件)
常用选项:
-a 包含-rtplgoD -r 递归recursive,类似cp时的-r选项-d 不递归转移目录 -v 同步时显示一些信息,让我们知道同步的过程 -l 保留软连接 -L 加上该选项后,同步软链接时会把源文件给同步 -p 保持文件的权限属性 -o 保持文件的属主 -g 保持文件的属组 -D 保持设备文件信息 -t 保持文件的时间属性 --delete 删除目标多出的文件或文本内容(必须和-r或-d结合使用),同时会增加目标缺少的部分 --exclude 过滤指定文件,如--exclude “logs”会把文件夹logs的文件或者目录过滤掉,不同步--exclude-from 根据文件内容过滤,如想过滤两个文件可以写成 --exclude "a" --exclude "b",也可以 将a和b写入文件1.txt中,--exclude-from "1.txt" -P 显示同步过程,比如速率,比-v更加详细 -u 加上该选项后,如果DEST中的文件比SRC新,则不同步 -z 传输时压缩-e 指定传输通道(协议)-q quiet,无提示拷贝
注意:对于rsync命令,a和a/是有区别的
a 代表该目录和目录下内容,a/只是目录下的内容,不包含自身。
支持拷贝普通文件与特殊文件,如链接文件,设备文件等
支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变
可实现增量复制(删除),即只复制(删除)发生变化的数据,因此数据传输效率很高。
可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件( rsync本身不对数据加密)
可以通过 socket(进程方式)传输文件和数据(服务端和客户端)*。
支持匿名或认证(无需系统用户)进程模式传输,安全的进行数据备份及镜像。
注:增量复制即将源和目标做对比,只复制多出来的或发生变化的文件。(可以用参数控制)
1.本地拷贝
①把数据复制到指定位置,类似于cp
②使用参数实现删除的功能,类似于rm
③查看属性信息功能,类似于ls
例:
2.异地拷贝
将一台机器的数据复制到另一台机器。
远程shll模式
借助类似ssh隧道传输数据,适合不同的机器之间复制。
pull:拉,从远端拉取到本地。
rsync [OPTION] [USER]@HOST:SRC [DEST]
选项 认证用户@主机地址:源路径 本地路径
push:推,从本地推到远端。
rsync [OPTION] SRC [USER]@HOST:[DEST]
选项 本地路径 认证用户@主机地址:目标路径
注:第一次传输时会提示输入yes即可。要求输入对方的密码。
默认使用的是ssh 22端口,如果ssh服务端口号更改为8888,应这样写:
rsync -avz /etc/hosts -e "ssh -p 8888" :/opt/
3.rsync守护进程模式(重点)
首先要搭建rsync服务端(要有守护进程),然后才能在客户端实现推拉数据。
是企业运维的重要模式。
实践:
1.安装rsync命令:yum install rsync
2.设置rsync配置文件
注:客户端执行命令时用的是模块名(不用加中括号),对应的就是path的路径
创建用户和目录并赋予权限
3.启动和检查
查看服务状态:systemctl status rsyncd
设置开机启动:systemctl enable rsyncd
4.配置密码文件
注意:这里的密码文件路径、用户名必须和第2步里的配置文件一致。
1.打开nfs01服务器
2.配置(两种方法)
第1种方法:配置密码文件
注:这里只需将密码写入即可。
第2种方法:配置环境变量
原则:服务器端运行守护进程,客户端执行同步命令。
注:和异地拷贝的推拉有一些不同
pull:拉,从远端拉取到本地。
语法1:
rsync [OPTION] [USER]@HOST::SRC [DEST]
选项 虚拟用户@主机地址::模块名 本地路径
语法2:
rsync [OPTION] rsync://[USER]@HOST//SRC [DEST]
选项 rsync://虚拟用户@主机地址//模块名 本地路径
push:推,从本地推到远端。
方法1:
rsync [OPTION] SRC [USER]@HOST::[DEST]
选项 本地路径 虚拟用户@主机地址::模块名
方法2:
rsync [OPTION] SRC rsync://[USER]@HOST//[DEST]
选项 本地路径 rsync://虚拟用户@主机地址//模块名
测试:
原因是服务器端用户rsync没有权限存储文件的完整属性,可以将配置文件/etc/rsyncd.conf中的uid和gid都改为root,或者加一行:fake super = yes 代表不用root用户也有权限存储文件的完整属性。
man rsyncd.conf 对fake super的解释:This allows the full attributes of a file to be stored without having to have the daemon actually running as root.
更改完成后,测试:
注:如果客户端环境变量RSYNC_PASSWORD配置好了,那么--password-file=/etc/rsync.password可以不用写。
可以在/etc/rsyncd.conf中设置多个模块名,使客户端可以向多个目录共享文件。
注:要一一对应,一个模块一个path,顺序不要乱。
服务器端创建目录并设置权限
客户端进行传输
检查服务器端是否收到文件