Linux之间的文件传输方式
大数据集群经常涉及文件拷贝,我在学习大数据时总结了几种方式
三台主机:192.168.10.100
、192.168.10.101
、192.168.10.102
有一个一样的用户:swcode
做过映射关系:
hadoop100 192.168.10.100
hadoop101 192.168.10.101
hadoop102 192.168.10.102
SCP拷贝#
scp
会拷贝所有指定内容
1、向192.168.10.101
推送数据
scp -r /home/swcode/test.txt test1@192.168.1.101:/home/swcode
2、从192.168.10.100
拉取数据
scp -r swcode@192.168.1.101:/home/swcode/test.txt /home/swcode/
3、在192.168.10.101
上将192.168.10.100
的数据拷贝到192.168.10.102
上
scp -r swcode@192.168.1.100:/home/swcode/test.txt swcode@192.168.1.102:/home/swcode/
RSYNC同步#
rsync
只会复制不一样的内容
1、同步192.168.10.100
和192.168.10.101
的~
目录
rsync -av /home/swcode/ swcode@192.168.10.101:/home/swcode
没有的可以安装
yum install -y rsync
2、分发脚本xsync
,可以放到/etc/profile.d/
中,全局使用(别忘了chomd
执行权限)
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器,hosts内做过映射关系:hadoop102 192.168.10.102
for host in hadoop101 hadoop102
do
echo =============== $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/$filename $host:$pdir
else
echo $file does not exists!
fi
done
done
作者:sw-code
出处:https://www.cnblogs.com/sw-code/p/15555363.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
未经作者同意,请勿转载;若经同意转载,请在文章明显位置注明作者和出处。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库