linux下文件同步脚本

       文件传输在linux下是很容易通过scp协议和命令实现的,本脚本是同步集群的文件夹的文件,也可以单独同步某个机器。

各个机器直接最好设置无密登陆,否则中间会不断的要求输入登陆密码。

脚本如下:

#! /bin/bash
#目的主机的登录名
USERNAME=hadoop

function synfiles()
{ 

host=$2
dir=$(ls $1); #获取需要同步文件列表
for file in $dir
do 
   fs=$1/$file;
   echo $fs;
   if [ -f $fs ];
    then
     scp  $fs $USERNAME@$host:$fs;
   elif [ -d $fs ];
    then 
     scp -r  $fs $USERNAME@$host:$fs;
   fi

done
}
function gethost(){
    path=$1
   #获取同步主机列表,目前是从/etc/host中获取
    hosts=$(awk '/slave/ {print $2}' /etc/hosts) 
    for host in $hosts
    do
       echo 'beginning synchronize $host files'
       synfiles $path $host
    done

}
dir=
if [ ! $1 ];then
 dir=/var/log
else
 dir=$1
fi
echo 'synic files in'$dir
#同步指定的主机
if [ $2 ];then
        host=$2
       echo "beginning synchronize ${host} files"
       synfiles $path $2
else 
  #同步默认设置的主机列表
  gethost $dir
fi


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值