shell 多进程打包备份脚本
2015-08-08 14:54
471 查看
#!/bin/sh ############################################## # # # # # tar the all backup data and saved # # in backuptar directory # # # ############################################## DATE=`date +%Y%m%d` DATE_START=`date +%Y%m%d-%H:%M:%S` Mail="test@example.com" LogName=`echo $0 | cut -d. -f1` pid_file="/tmp/$LogName.pid" BACKUP_DIR="file1 file2 file3" tmp_fifofile="/tmp/$$.fifo" function pid_check(){ ###check the rsync scrpits have finished count=0 for i in 1 2 3 do if [ -f "/tmp/rsync_backup.pid" ];then sleep 60 ((count++)) fi done if [ $count -eq 3 ];then echo -e "Rsync the backup files maybe have problesm,the cn_backup.pid exits." | mail -s "Tarball failure,can not continue `hostnae -i`" $Mail exit 43 fi } function pid_lock(){ if [ -f "$pid_file" ];then backup_tar_pid=`cat $pid_file` echo -e "Tarball failure for Backup Server: \n PID: $backup_tar_pid DATE: $DATE Script: $0 " | mail -s "Tarball failure for Backup Server `hostname -i`" $Mail echo "Tarball failure" >> /home/opsuser/backup_log/${LogName}_$DATE.log exit 44 else echo $$ > $pid_file fi } function pid_free(){ rm $pid_file if [ -f "$pid_file" ];then echo "$pid_file exist, please check the pid file" >> /home/opsuser/backup_log/${LogName}_$DATE.log fi } function Tarball(){ mkfifo $tmp_fifofile exec 6<>$tmp_fifofile rm $tmp_fifofile Num=`echo $BACKUP_DIR | tr ' ' '\n' | wc -l` thread=8 for ((i=0;i < $thread;i++)) do echo done >& 6 for i in $BACKUP_DIR do read -u6 { sleep 3 Name=`echo ${i##*/}` cd $i if [ $i = "/data/config_bak/httpd_201" ] then tar zcf ${Name}_${DATE}.tgz backup --exclude downloads else tar zcf ${Name}_${DATE}.tgz backup fi #ls -l ${Name}_${DATE}.tgz #It is using for test echo >& 6 } & done wait exec 6>&- DATE_END=`date +%Y%m%d-%H:%M:%S` echo "Make tarball SUCCEED on $DATE" >> /home/opsuser/backup_log/${LogName}_$DATE.log echo -e "Tarball succeed for Backup Server: \n PID: $$ DATE: $DATE \n START: $DATE_START END: $DATE_END \n" > /tmp/backuptar.mail } function SendMail(){ cat /tmp/backuptar.mail | mail -s "Tarball SUCCEED for Backup Server Data `hostname -i`" $Mail rm /tmp/backuptar.mail } pid_check pid_lock Tarball SendMail pid_free
本文出自 “技术分享” 博客,请务必保留此出处http://rwdy2008.blog.51cto.com/2897912/1682905
相关文章推荐
- Hadoop之文件系统Shell
- shell EOF注意点
- Bash Shell 中的History命令
- shell中截取cut所不能做好的字符串的方法
- EDK2 环境搭建 & Shell-Debug(Microsoft Visual Studio 2013)
- 点滴记录一些shell命令
- shell 安装MYSQL
- shell脚本_自动安装mysql
- EDK2 环境搭建 & Shell - Debug (cmd)
- -bash:wget command not found的解决方法
- -bash:wget command not found的解决方法
- shell脚本学习笔记之常见语法结构用法
- 让shell脚本在后台飞
- Shell编程之环境变量配置文件
- Shell编程之环境变量配置文件
- shell 列出文件夹下所有文件的名称
- PowerShell-第1章 交互界面
- makefile中的shell语法
- -bash: php: command not found 命令找不到
- 更改mysql表引擎(shell)