shell批量多台服务器数据copy

  1. 实验服务器两台:

    192.168.77.189

    192.168.77.190

  2. 服务器免密钥登录设置:

    [[email protected]_168_77_189 ~]# ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    95:cf:19:a5:ff:d0:bc:80:f5:de:5a:4c:b5:63:ae:c6 [email protected]_168_77_189
    The key‘s randomart image is:
    +--[ RSA 2048]----+
    |              .  |
    |           . o   |
    |          o o.  .|
    |         . oo+.oo|
    |        S  .+.o=+|
    |              ==+|
    |            .  +=|
    |             E.o |
    |            ...  |
    +-----------------+
    [[email protected]_168_77_189 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.77.190
    [email protected]‘s password:
    Now try logging into the machine, with "ssh ‘192.168.77.190‘", and check in:

    .ssh/authorized_keys

    to make sure we haven‘t added extra keys that you weren‘t expecting.

    [[email protected]_168_77_189 ~]# ssh 192.168.77.190
    Last login: Sun Jul  5 23:16:20 2015 from 192.168.77.100
    [ro[email protected]_168_77_190 ~]# clear
    [[email protected]_168_77_190 ~]#
    [[email protected]_168_77_190 ~]#
    [[email protected]_168_77_190 ~]# exit

  3. copy脚本
#!/bin/bash
#write by lixi
#time by 2015-7-7 
#run by sh auto.shell.sh /root /mnt
if    [ ! -f ip.txt ] ; then
echo -e "\033[32mplease create ip.txt files...\033[0m"
cat << EOF
192.168.149.128
192.168.149.129
EOF
        exit
fi
if
  [ -z "$1" ] ; then
        echo -e "\033[32mUsage $0 command,example{src_file|src_dir Des_dir\033[0m}"
        exit
fi
count=`cat ip.txt | wc -l`
rm -rf ip.txt.swp
i=0
while  ((i<$count))
do
i=`expr $i + 1`
sed "${i}s/^/&${i} /g"  ip.txt >> ip.txt.swp
IP=`awk -v I="$i" ‘{if(I==$1)print $2}‘ ip.txt.swp`
scp -r $1 [email protected]${IP}:$2
#rsync -ap --delete $1 [email protected]${IP}:$2
done

以上脚本用rsync也可以,,,rsync同步两个文件一样,,,例如sh auto.shell.sh /opt/ /opt/保持两个服务器之间这个目录文件一样

4.批量远程服务器执行命令

#!/bin/bash
# Auto run server commend
# by lx 2015-7-7
if [ ! -f ip.txt ]; then
        echo -e "\033[32mplease create ip.txt files...\033[0m"
cat << EOF
192.168.149.128
192.168.149.129
EOF
        exit
fi
if 
        [ -z "$*" ] ; then
        echo -e "\033[32mUsage: $0 Commend,Example{rm /tmp/text.txt|mkdir /tmp/text2}\033[0m"
        exit
fi
        count=`cat ip.txt | wc -l`
        rm -rf ip.txt.swp
        i=0
while ((i<$count))
do
        i=`expr $i + 1`
        sed "${i}s/^/&${i} /g" ip.txt >>ip.txt.swp
        IP=`awk -v I="$i" ‘{if(I==$1)print $2}‘ ip.txt.swp`
ssh -q -l root $IP "$*; echo -e ‘-----------------------\nthe $IP Exec command:
$* success !‘;sleep 2"
done
[email protected]_168_77_189 ~]# sh auto_ssh.sh mkdir /tmp/text2
-----------------------
the 192.168.77.190 Exec command:
mkdir /tmp/text2 success !
-----------------------
the 192.168.77.189 Exec command:
mkdir /tmp/text2 success !

5.服务器之前文件同步:

#!/bin/bash
#by lixi 2015.7.7

#run by sh auto_rsync.sh flush

flush()
{
if
        [ ! -f rsync.list ]; then
        echo -e "\033[32mplease create rsync.list file...\033[0m"
cat << EOF
192.168.149.128 src_dir  des_dir
192.168.149.129 src_dir  des_dir
EOF
        exit
fi
        rm -rf rsync.list.swp ; cat rsync.list | grep -v "#" >rsync.list.swp
        COUNT=`cat rsync.list.swp|wc -l`
        NUM=0
while ((${NUM} < $COUNT))
do
        NUM=`expr $NUM + 1`
        Line=`sed -n "${NUM}p" rsync.list.swp`
        SRC=`echo $Line |awk ‘{print $2}‘`
        DES=`echo $Line |awk ‘{print $3}‘`
        IP=`echo $Line |awk ‘{print $1}‘`
        rsync -ap --delete ${SRC}/   [email protected]${IP}:${DES}/
done
}
restart()
{
        rm -rf restart.list.swp ; cat restart.list | grep -v "#" >> restart.list.swp
       COUNT=`cat restart.list.swp|wc -l`
        NUM=0
while ((${NUM} < $COUNT))
do
         NUM=`expr $NUM + 1`
        Line=`sed -n "${NUM}p" restart.list.swp`
        Command=`echo $Line |awk ‘{print $2}‘`
        IP=`echo $Line |awk ‘{print $1}‘`
        ssh -l root $IP "sh $Command; echo -e ‘----------------\nthe $IP Exec Commadn : sh $Command success !‘"
done
}
case $1 in
        flush )
        flush
        ;;
        restart )
        restart
        ;;
        * )
        echo -e "\033[32mUsage: $0 command,example {flush|restart}\033[0m"
        ;;
esac

时间: 2024-07-30 20:23:34

shell批量多台服务器数据copy的相关文章

rsync + inotify 实现多台服务器数据同步

环境分析:目前环境4台web服务器采用共享存储技术,由于nas服务最近频繁掉线,影响网站访问,故计划采用对象存储方案.我们云环境补救措施可以用多台Linux服务器做存储,配合rsync(同步)+notify(触发)实现服务器数据同步. 方案实施: 1.方案分析:每台web服务器上分别挂载一个存储盘/newweb,将原先网站访问资源指向/otherweb的路径修改至这个/newweb,由于磁盘容量没有nas大,可以将web用到的数据源,如图片.网页等放在这个路径下,邮箱.日志等继续放在nas下,即

linux两台服务器远程copy文件

1.将远程机器的文件copy到本地 scp -r  [email protected]:/bea   /gg   将远程的/bea copy到/gg下面 -r  Recursively copy entire directories. 递归复制整个目录 [email protected]:/bea 远程机器的目录 /gg 本地目录 2.将本地的文件copy到远程 scp -r  /bea/oracle [email protected]:/bea  /gg 3.如果远程服务器防火墙有特殊限制,s

批量实现多台服务器之间ssh无密码登录的相互信任关系

最近IDC上架了一批hadoop大数据业务服务器,由于集群环境需要在这些服务器之间实现ssh无密码登录的相互信任关系.具体的实现思路:在其中的任一台服务器上通过"ssh-keygen -t rsa"产生公私钥文件,然后将公钥文件拷贝成authorized_keys文件,最后将它的.ssh目录下的文件全部批量拷贝到其他服务器的/root/.ssh目录(即当前用户家目录的.ssh)下即可.这批hadoop服务器的ssh端口默认都是22,密码默认都是kevin123456,ip列表如下: 1

SQLServer用powershell实现多台服务器批量执行SQL脚本

在运维工作中,会遇到很多重复性的操作.对于单台服务器重复性的工作,可以用job实现定期的处理:而对于多台服务器相同的需求,我们就可以利用powershell来进行批量的操作,对多台服务器进行批量相同的操作.本文重点分析这种方案的实现过程,而不纠结于对每台服务器具体执行的SQL脚本,所以在例子中以简单的SQL脚本为例:在中心服务器上执行一个powershell脚本,即可以收集所有服务器的信息.对类似于定期出report的任务,还可以将该powershell脚本设置成计划任务. 首先将需要执行批量操

shell脚本实现同时管理多台服务器

shell脚本实现同时管理多台服务器,未使用ansible,自动手动实现 ssh不登录机器执行命令(前提得实现无密码登录) ssh 127.0.0.1 'ifconfig' ssh 127.0.0.1 'ifconfig|grep bbb' ssh 127.0.0.1 'tail /var/log/secure' shell while循环读取需要管理的服务器的ip列表 cat /tmp/hosts|while read line;do echo $line; done 结合上述两个实现同时管理

Linux批量修改多台服务器的主机名(hostname)

一.场景介绍:        一个环境下有非常多的服务器时,每台服务器的Hostname都不一样,有成千上百台服务器,如果通过ssh的方式逐一进行修改,那么对我们来说,工作量是非常巨大,且效率非常低下,况且这个主机名对于我们平时运维也是至关重要,当我们ssh到某一台服务器,如果没有设置主机名,那么就需要通过其他途径来得知该服务器的位置信息等等,给我们运维人员带来很大的运维烦恼. 二.准备工作         1.所有服务器操作系统root账户密码需要一致,且网络互通         2.pssh

在多台服务器上简单实现Redis的数据主从复制

      Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面我演示下怎样在多台服务器上进行Redis数据主从复制.这里我假设有两台服务器,一台是Windows操作系统(局域网IP:192.168.3.82),一台是Linux操作系统(局域网IP:192.168.3.90),在两个操作系统都安装redis,Windows操作系统使用cygwin工具进行安装,命令为: 1 2 3 $ t

多台服务器之间如何让sqlserver,mysql数据库进行数据同步?

服务器存储视频,带宽不够用,想用多台服务器,如何让所有服务器之间视频实时同步,可以用什么软件!当企业租用服务器,但是在数据同步的时候,又有着严格的要求,要求数据达到一致,在科技发达的今天,这又该如何做到了?下面天下数据为大家介绍多台服务器之间让数据同步的方法! 1.采用高可用sureHA软件镜像型,一台主服务器,一台备服务器,通过心跳线(网线)实时将数据备份,实现服务器双机互备的功能,此方式保证多台服务器之间数据的一致性. 2.采用高可用sureHA双机热备共享型.一台主服务器,一台备服务器,链

触发器 实现两台服务器的数据同步

第一,先配置两台电脑,具体的步骤请参见http://support.microsoft.com/kb/839279/en-us 第二,创建连接服务器,代码如下: exec   sp_addlinkedserver  'srv2','','SQLOLEDB','192.168.0.14' exec   sp_addlinkedsrvlogin   'srv2','false',null,'sa','sa123456' 说明:这两个存储过程是系统定义的,直接用就行.参数解释,'srv2':链接服务器