linux中同步更新数据脚本/调用远程执行脚本详解

发布时间:2020-05-12编辑:脚本学堂
本文介绍下,在linux系统中,同步更新数据的脚本,以及调用远程执行脚本的方法。有需要的朋友参考下吧。

介绍下在本机结合调用远程机器脚本的方法。

A机器(beta)打包、B机器(同步更新调用了C的脚本)、C机器(数据服务器)

【在A机器】

dw_package.sh
 

复制代码 代码示例:

user@A:/data/shell/dw> cat dw_package.sh
#!/bin/bash
# DW下载svn最新代码与打jar包并发送到B机器
# 2012年11月
PATH=/data/maven/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
SVN_DIR=/data/dw/dwsync

#read -p "请填写svn版本号:"svnno
read -p "请填写svn版本号: " svnno
#跳转目录
cd $SVN_DIR
svn up -r $svnno
mvn clean package -Denv=prd
ssh B机器IP cp -p /data/repository/maven/prd/dw/ule.dwsync.jar /data/repository/maven/prd/dw/ule.dwsync.jar.<code>date +'%F'</code>
rsync -av $SVN_DIR/target/ule.dwsync.jar B机器IP地址:/data/deploy/repository/maven/prd/dw/
echo -ne "n33[32m请登录B机器,执行同步脚本:33[0m/data/application/dwsync/dw_sync.shnn"
1234567891011121314151617 user@A:/data/shell/dw> cat dw_package.sh
#!/bin/bash
# DW下载svn最新代码与打jar包并发送到B机器
# 2012年11月
PATH=/data/maven/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
SVN_DIR=/data/dw/dwsync

#read -p "请填写svn版本号:"svnno
read -p "请填写svn版本号: " svnno
#跳转目录
cd $SVN_DIR
svn up -r $svnno
mvn clean package -Denv=prd
ssh B机器IP cp -p /data/repository/maven/prd/dw/ule.dwsync.jar /data/repository/maven/prd/dw/ule.dwsync.jar.<code>date +'%F'</code>
rsync -av $SVN_DIR/target/ule.dwsync.jar B机器IP地址:/data/deploy/repository/maven/prd/dw/
echo -ne "n33[32m请登录B机器,执行同步脚本:33[0m/data/application/dwsync/dw_sync.shnn"
 

【在B机器】

dw_update.sh
 

复制代码 代码示例:

web@ebay53:~> cat /data/shell/dw/dw_update.sh
#!/bin/bash
# 发布DW所需要jar包到C机器,并执行全量或增量同步
# 2012年11月

PATH=/data/maven/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
SHELL_DIR=/data/deploy/shell/dw
JAR_DIR=/data/postmall/deploy/repository/maven/prd/dw
rsync -av $JAR_DIR/ule.dwsync.jar oracle@C机器IP:/data/application/dwsync/
#rsync -av $JAR_DIR/ule.dwsync.jar oracle@C机器IP:/tmp/
ssh oracle@C机器IP "bash /data/application/dwsync/dw_sync.sh"
123456789101112 web@ebay53:~> cat /data/shell/dw/dw_update.sh
#!/bin/bash
# 发布DW所需要jar包到C机器,并执行全量或增量同步
# 2012年11月

PATH=/data/maven/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
SHELL_DIR=/data/deploy/shell/dw
JAR_DIR=/data/postmall/deploy/repository/maven/prd/dw
rsync -av $JAR_DIR/ule.dwsync.jar oracle@C机器IP:/data/application/dwsync/
#rsync -av $JAR_DIR/ule.dwsync.jar oracle@C机器IP:/tmp/
ssh oracle@C机器IP "bash /data/application/dwsync/dw_sync.sh"
 

【在C机器】

dw_sync.sh
 

复制代码 代码示例:
user@test:~$ cat /data/application/dwsync/dw_sync.sh
#!/bin/bash
# 同步并加入定时同步
# 2012年11
SHELL_DIR=/data/application/dwsync
echo -e "33[32m请在下面输入逻辑表名,多个则以逗号隔开,33[0m如:Listing,Item"
echo -ne "请输入逻辑表名:"
read tabname
echo -e " "
echo -ne "同步类型:全量同步(allSync.sh)/增量同步(updateSync.sh)n33[32mnallSync.shnupdateSync.shn33[0m"
echo -ne "请选择同步类型:"
read Sync
#跳转目录
$SHELL_DIR/$Sync $tabname || (echo -e "33[31m 请确认同步类型或逻辑表名是否正确 33[0m";exit)
echo -ne "定时类型:33[32m增量定时(dwsync_update_list.txt)或全量定时(dwsync_all_list.txt)33[0mn无需加定时或已加定时请33[32mctrl+c33[0m退出n33[32mndwsync_update_list.txtndwsync_all_list.txtn33[0m"
echo -ne "请选择定时类型:"
read timer
# 若需把逻辑表名加入到定时文本里,则继续执行下列脚本
#假如多次重复同步。。。。。。
if [[ $timer == dwsync_update_list.txt ]]
then
    echo $tabname|sed 's/,/n/g' >>$SHELL_DIR/dwsync_update_list.txt
    cat $SHELL_DIR/dwsync_update_list.txt |sort|uniq >$SHELL_DIR/dwsync_update_list.tmp
    cat $SHELL_DIR/dwsync_update_list.tmp >$SHELL_DIR/dwsync_update_list.txt
    rm -f $SHELL_DIR/dwsync_update_list.tmp
    echo -ne "33[32mSuccessful! 已成功加入增量定时33[0mn"
elif [[ $timer == dwsync_all_list.txt ]]
then
    echo $tabname |sed 's/,/n/g' >>$SHELL_DIR/dwsync_all_list.txt
    cat $SHELL_DIR/dwsync_all_list.txt |sort |uniq > $SHELL_DIR/dwsync_all_list.tmp
    cat $SHELL_DIR/dwsync_all_list.tmp >$SHELL_DIR/dwsync_all_list.txt
    rm -f $SHELL_DIR/dwsync_all_list.tmp
    echo -ne "33[32mSuccessful! 已成功加入全量定时33[0mn"
else
    exit
fi
123456789101112131415161718192021222324252627282930313233343536 user@test:~$ cat /data/application/dwsync/dw_sync.sh
#!/bin/bash
# 同步并加入定时同步
# 2012年11
SHELL_DIR=/data/application/dwsync
echo -e "33[32m请在下面输入逻辑表名,多个则以逗号隔开,33[0m如:Listing,Item"
echo -ne "请输入逻辑表名:"
read tabname
echo -e " "
echo -ne "同步类型:全量同步(allSync.sh)/增量同步(updateSync.sh)n33[32mnallSync.shnupdateSync.shn33[0m"
echo -ne "请选择同步类型:"
read Sync
#跳转目录
$SHELL_DIR/$Sync $tabname || (echo -e "33[31m 请确认同步类型或逻辑表名是否正确 33[0m";exit)
echo -ne "定时类型:33[32m增量定时(dwsync_update_list.txt)或全量定时(dwsync_all_list.txt)33[0mn无需加定时或已加定时请33[32mctrl+c33[0m退出n33[32mndwsync_update_list.txtndwsync_all_list.txtn33[0m"
echo -ne "请选择定时类型:"
read timer
# 若需把逻辑表名加入到定时文本里,则继续执行下列脚本
#假如多次重复同步。。。。。。
if [[ $timer == dwsync_update_list.txt ]]
then
    echo $tabname|sed 's/,/n/g' >>$SHELL_DIR/dwsync_update_list.txt
    cat $SHELL_DIR/dwsync_update_list.txt |sort|uniq >$SHELL_DIR/dwsync_update_list.tmp
    cat $SHELL_DIR/dwsync_update_list.tmp >$SHELL_DIR/dwsync_update_list.txt
    rm -f $SHELL_DIR/dwsync_update_list.tmp
    echo -ne "33[32mSuccessful! 已成功加入增量定时33[0mn"
elif [[ $timer == dwsync_all_list.txt ]]
then
    echo $tabname |sed 's/,/n/g' >>$SHELL_DIR/dwsync_all_list.txt
    cat $SHELL_DIR/dwsync_all_list.txt |sort |uniq > $SHELL_DIR/dwsync_all_list.tmp
    cat $SHELL_DIR/dwsync_all_list.tmp >$SHELL_DIR/dwsync_all_list.txt
    rm -f $SHELL_DIR/dwsync_all_list.tmp
    echo -ne "33[32mSuccessful! 已成功加入全量定时33[0mn"
else
    exit
fi