![expect与rsync 异步并行备份数据脚本,第1张 expect与rsync 异步并行备份数据脚本,第1张](/aiimages/expect%E4%B8%8Ersync+%E5%BC%82%E6%AD%A5%E5%B9%B6%E8%A1%8C%E5%A4%87%E4%BB%BD%E6%95%B0%E6%8D%AE%E8%84%9A%E6%9C%AC.png)
expect与rsync异步并行备份数据脚本
expect与rsync 多线程并行备份数据脚本
#!/bin/bash
#author:qunying.liu
#2014.08.02
#脚本主要用途:
根据rsync从远程控制机器备份数据到该设备机器相匹配目录
#脚本目录:/usr/local/scripts/,expect脚本目录:/usr/local/scripts/dsfilersync,
#备注名称:一个机器相匹配一个exp脚本,该脚本中包括该机器全部rsync同歩目录。
#复位目录
cd /usr/local/scripts/
grep "rsync -avz" ./dsfilersync/*.exp|awk '{print $NF}' >backupdir.info
for DIR in `cat ./backupdir.info`;
do
[ ! -d $DIR ] && mkdir -p $DIR && echo "Create Dir $DIR d
one !"
ls -ld $DIR
done
#统计分析必须备份的机器IP到dataserver.ip文件中
grep "rsync -avz" ./dsfilersync/*.exp|awk -F@ '{print $2}'|awk -F: '{print $1}'|sort |uniq >./dsfilersync/dataserver.ip
tmp_fifofile="/tmp/fifo.$$" ;mkfifo "$tmp_fifofile" ;exec 6<>"$tmp_fifofile" ;rm $tmp_fifofile
#根据管路文档,让expect脚本多线程实行。
for ip in `cat ./dsfilersync/dataserver.ip`;do
{
echo "$ip,Begin at `date %Y-%m-%d-%H-%M-%S`...."
#每日下午12点清除日志
if [ 12 -eq $(date %H) ];then
echo "">/data/scripts/logs/time$ip.log
echo "">/data/scripts/logs/datarsync$ip.log
fi
flag="`/bin/ps -ef|grep $ip.exp|grep -v grep`"
if [ -z "$flag" ];then
echo "$ip:Begin at `date %Y-%m-%d-%H-%M-%S`" >> ./logs/time$ip.log
cd /usr/local/scripts/
( ./dsfilersync/$ip.exp 1> ./logs/datarsync$ip.log 2>&1 && echo "$ip:Finsh at `date %Y-%m-%d-%H-%M-%S`" >> /data/applogs/time$ip.log ) || /usr/local/scripts/MonitorAgent -f monitor -t "data rsync file from $ip failed " -i " rsync file failed from $ip , please check /data/applogs/datarsync$ip.log "
else
echo "$ip: Already running...."
fi
} &
done
wait
exec 6>&-
echo "Finsh at `date %Y-%m-%d-%H-%M`"
$ip.exp:
#!/usr/bin/expect -f
#
expect "#"
set NDATE [exec date %Y-%m-%d]
set TDATE [exec date -d tomorrow %Y-%m-%d]
#set NDATE [exec date -d yesterday %Y-%m-%d]
#set TDATE [exec date %Y-%m-%d]
set
timeout 12000;
spawn /usr/bin/rsync -avz --include "*.tar.gz" --exclude "*.*" -e "/usr/local/bin/ssh -lqunying -p12345 -q" xiaoqiang@10.1.1.1:/data/test/welike/tmps/$TDATE /data/test/10.1.2.1/webs/tmp/
expect "password:" { send "hehe\n" ; exp_continue }
评论列表(0条)