大数据集群经常涉及文件拷贝,我在学习大数据时总结了几种方式
三台主机: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
会拷贝所有指定内容
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
只会复制不一样的内容
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