当前位置: 首页 > news >正文

rsync 命令以及脚本使用

rsync是什么?

rsync 是一个远程同步工具

下载

你的集群每一台都需要下载!(也就是你需要同步的机器)

yum install -y xsync

如果其他不下载就是报错的这样(使用脚本的情况下,注意这里是提示 rsync没有找到,不是xsync)

[root@master bin]# xsync /opt/test/
==================== master ====================
sending incremental file listsent 97 bytes  received 17 bytes  76.00 bytes/sec
total size is 10  speedup is 0.09
==================== slave1 ====================
bash: rsync: 未找到命令
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2]
==================== slave2 ====================
bash: rsync: 未找到命令
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2]

优点与scp对比

优点:rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
与scp对比:rsync 要比scp复制速度快,因为 rsync 是复制有差异性的文件(它会自己检查),而scp 则是把所有的文件统一复制过去,达到的是一个 统统覆盖的意义

纯命令 Chat- GPT-3.5 演示:

rsync 是一个用于文件同步和备份的工具,可以在本地或远程系统之间高效地进行文件的复制和同步。以下是 rsync 命令的基本用法示例以及一些常用选项:

rsync [options] source destination
其中 source 表示源文件或目录的路径,destination 表示目标文件或目录的路径。

常用的选项包括:

-a:归档模式,用于保持文件的属性、权限和时间等。
-v:详细输出模式,显示正在复制的文件和目录。
-r:递归复制目录及其内容。
-z:传输时压缩数据,可以减少传输时间。
--delete:删除目标中不存在于源的文件。
--exclude:排除指定的文件或目录。
-e:指定远程 shell 的路径,通常用于远程传输。

以下是一些示例:

本地文件同步:

rsync -av /path/to/source /path/to/destination

本地目录同步:

rsync -av /path/to/source/ /path/to/destination/

从本地到远程服务器同步:

rsync -av /path/to/source username@remote_server:/path/to/destination

从远程服务器到本地同步:

rsync -av username@remote_server:/path/to/source /path/to/destination

同步时排除特定文件或目录:

rsync -av --exclude='*.log' /path/to/source /path/to/destination

使用压缩传输:

rsync -avz /path/to/source /path/to/destination

请注意,rsync 的选项和用法非常丰富,你可以根据需要进行组合和定制。在使用之前,建议查阅相关文档或执行 man rsync 命令来获取更详细的信息和帮助。

脚本

脚本来自这位仁兄: https://blog.csdn.net/qq_63756815/article/details/127016471
1、在 /bin 目录下创建 xsync文件脚本
2、需要修改的是在 第二步,修改为自己的主机名
3、修改 文件权限为 777,也可以单加一个可执行权限(x):
chmod 777 xsync
4、

#!/bin/bash#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍历集群所有机器,这里记得修改为自己的集群主机名
for host in hadoop102 hadoop103 hadoop104
doecho ====================  $host  ====================#3. 遍历所有目录,挨个发送for file in $@do#4. 判断文件是否存在if [ -e $file ]then#5. 获取父目录pdir=$(cd -P $(dirname $file); pwd)#6. 获取当前文件的名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
done

演示:
脚本:

[root@master bin]# xsync /opt/test/
==================== master ====================
sending incremental file listsent 97 bytes  received 17 bytes  76.00 bytes/sec
total size is 10  speedup is 0.09
==================== slave1 ====================
sending incremental file list
test/
test/a1.txt
test/a2.txtsent 200 bytes  received 58 bytes  172.00 bytes/sec
total size is 10  speedup is 0.04
==================== slave2 ====================
sending incremental file list
test/
test/a1.txt
test/a2.txtsent 200 bytes  received 58 bytes  516.00 bytes/sec
total size is 10  speedup is 0.04

纯命令:

[root@master bin]# echo 2222 > /opt/test/a2.txt 
[root@master bin]# rsync -av /opt/test/ slave1:/opt/test/
sending incremental file list
a2.txtsent 137 bytes  received 41 bytes  118.67 bytes/sec
total size is 10  speedup is 0.06

这里 我专门试了试会不会自动给我创建目录(因为我没学过脚本),发现是会的
但是 如果是纯命令的话,你必须和scp命令相同的语法,就是绝对路径,且只会复制文件

http://www.lryc.cn/news/112845.html

相关文章:

  • 【数理知识】协方差,随机变量的的协方差,随机变量分别是单个数字和向量时的协方差
  • WebDAV之π-Disk派盘+可达漫画
  • Spring中Bean的线程安全问题
  • Java spring boot 全解Camunda 7,从 0 到 1 构建工作流平台——第二节:Spring boot 简单集成
  • 手持式静电测试仪的运用原理
  • 【css问题】flex布局中,子标签宽度超出父标签宽度,导致布局出现问题
  • 【vue3】前端应用中使用WebSocket与服务器进行通信并管理连接状态。
  • 服务端高并发分布式结构演进之路
  • 微服务基础总结
  • 实现vscode上用gdb调试stm32
  • 第4章 变量、作用域与内存
  • Python爬虫遇到重定向问题解决办法汇总
  • R并行计算
  • STM32 低功耗-待机模式
  • 极海APM32F003F6P6烧写问题解决记录
  • 【大数据】Flink 详解(一):基础篇
  • ChatGPT 作为 Python 编程助手
  • 饿了么输入框限制只能输入数字,并且保留小数
  • kylin-Desktop gsettings 获取或设置系统配置
  • setmap使用
  • Python3 网络爬虫开发实战
  • docker: CMD和ENTRYPOINT的区别
  • DC电源模块对于定制的要求主要有这几点
  • Kubernetes高可用集群二进制部署(六)Kubernetes集群节点添加
  • 网关 GateWay 的使用详解、路由、过滤器、跨域配置
  • vsocde里面远程连接服务器报could not esatablish connection xxxx
  • Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改
  • 无涯教程-Perl - foreach 语句函数
  • easyWechat 5.x 复写代码 获取企业微信授权用户敏感信息
  • 医疗器械研发中的可用性工程实践(一)