今天开始自己的shell脚本练习,刚好公司有太服务器,要时间对数据的cp是按月的:

考虑:首先寻找规律,发现都放置在/opt/www/aaa/  里面有很多的2级和3级目录和文件,但我追踪要备份的是年月为文件名的格式:2015_06

这样的格式,首先我们不清楚这个目录下有多少这样的2015_06的子目录所以需要统计:

find /opt/www/aaa -name 2015_06 查看了下我要备份的地方#!/bi#admin fengtaotao Email:@qq.com

#Fri Jul   :: CST 2015
pathh=/opt/www/acc/musicFile/ @首先定义的是源文件路径
pathd=/opt2/musicFile/       @要备份到的路径
datem=`date +%m`          @这里我定义一个当前月的显示 原因是我在crontab中是要备份的是上个月的
#getMonth              @简单的注释 我喜欢吧注释写在行代码下面
if [ "$datem" == 01 ];then @当前月是1月份那么当前年-1从而备份去年的12月份
  datem="_12"           @如果 当前月是1月份 那么僵变量修改为12月份
  datey=`date +%Y`
  datey=$(($datey-1))       @将年份改为去年 这样就是去年的12月份
else
  datem="_0$(($datem-1))"
  datey=`date +%Y`          @考虑到每年的1月份要备份去年的
fi
#getFullYear dird="$datey$datem" #echo "$dird" readd=`date +%N`.txt find $pathh -name $dird &>> $readd for i in $(cat $readd);do
aac=$(echo $i | awk -F "/" '{print $6"/"$7"/"}')
aac=${pathd}${aac}
cp -r $i $aac &>> dbcp.log
done rm -rf $readd

OK  接下来修改下权限和crontab 的定时

chmod u+x dbback.sh
crontab -e
* * /root/bash/dbback.sh 没个月的1号 凌晨1点整开始备份

2.当然我也写了一个手动备份的脚本

#!/bin/bash
#admin fengtaotao Email:@qq.com
#Fri Jul :: CST
pathh=/opt/www/acce/musicFile/
pathd=/opt2/musicFile/
touch ulist.txt
readd=ulist.txt for a in $(cat list.txt);do find $pathh -name $a &>> $readd
done for i in $(cat $readd);do
aac=$(echo $i | awk -F "/" '{print $6"/"$7"/"}')
aac=${pathd}${aac}
cp -r $i $aac &>>dbcp.log
done rm -rf $readd

这个我们可以再脚本的同目录下 创建一个list.txt文档,在里面写入我们需要备份的名称列表默认是换行为一个名称

shell脚本笔记(原创不断记录)的更多相关文章

  1. Shell脚本笔记

      如何查询文件里的某个字符串? grep “字符串” 文件 例:grep "abc" tmp.txt   如何将查询出来的内容赋给变量? str=$(grep "abc ...

  2. Shell脚本笔记(七)控制Shell脚本

    控制Shell脚本 一.处理信号 1) SIGHUP本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联. ...

  3. Shell脚本笔记(一)一些零碎的基础知识

    一些零碎的基础知识 一.认识Shell脚本 一)相关概念 Shell是一种命令解释器,作用是按次序执行(遇到子脚本,先执行子脚本的命令)用户输入的命令和程序. Shell脚本语言是弱类型语言,与其他脚 ...

  4. Shell脚本笔记(二)Shell变量

    Shell变量 一)全局环境变量 全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了.另外全局变量会被子shell的同名变量覆盖. #定义一个 ...

  5. Shell脚本笔记 1

    函数别名 设置别名 alias name="command" alias ll="ls -laS" 取消别名 unalias name 求取数学表达式 valu ...

  6. Linux shell脚本笔记

    shell 命令解释器 是用来解释用户对系统的操作 使用 cat /etc/shells 可以查看 系统安装的shell Linux 启动过程: BIOS -> MBR -> BootLo ...

  7. Shell脚本笔记(六)呈现数据

    呈现数据 一.文件描述符 Linux系统将每个对象当做文件处理,这包括输入和输出进程.Linux用文件描述符来标识每个文件对象.每个进程最多可以有9个 文件描述符,bash shell保留了前三个文件 ...

  8. 学习shell脚本笔记

    1.if 是单分支语句,使用格式如下: if condition ; then statement ….. fi 2.if … else 是双分支语句,使用格式如下: if condition ; t ...

  9. Shell脚本笔记(三)shell中的数学计算

    shell中的数学计算 一.使用方括号 #!/bin/bash a= b= c= res=$[$a * ($c-$b)] echo $res 二.使用(()) +)) ((i=+)) b=$((-*) ...

随机推荐

  1. 【bzoj2654】 tree

    http://www.lydsy.com/JudgeOnline/problem.php?id=2654 (题目链接) 题意 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有nee ...

  2. UOJ147 斗地主

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关 系根据牌的数码表示如下:3<4&l ...

  3. AutoIt3(AU3)开发的装机小工具,实现快速检测以及一些重用快捷操作功能

    项目相关地址 源码:https://github.com/easonjim/Installed_Tools bug提交:https://github.com/easonjim/Installed_To ...

  4. TortoiseGit与GitHub项目关联设置

    一.常规克隆GitHub上的项目: 1.在本地硬盘上放置项目的地方上[右键]->[Git 克隆]->在[url地址]上输入https的GitHub的链接,然后就是等待完成,之后即可完成拉取 ...

  5. HTTP Header Injection in Python urllib

    catalogue . Overview . The urllib Bug . Attack Scenarios . 其他场景 . 防护/缓解手段 1. Overview Python's built ...

  6. 关于《加密与解密》的读后感----对dump脱壳的一点思考

    偶然翻了一下手机日历,原来今天是夏至啊,时间过的真快.ISCC的比赛已经持续了2个多月了,我也跟着比赛的那些题目学了2个月.......虽然过程很辛苦,但感觉还是很幸运的,能在大三的时候遇到ISCC, ...

  7. 【项目】Http请求在NSMutableURLRequest添加HttpBody的字典params属性

    在请求头中加入字典集合的Body,首先把字典转换成json,然后json转换成NSData,然后加入到HTTPBody中,我有已下写法 // 参数paramsNSDictionary * params ...

  8. 用GDB调试程序(一)

    http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或 ...

  9. mybatis 传递参数的方法总结

    有三种mybatis传递参数的方式: 第一种 mybatis传入参数是有序号的,可以直接用序号取得参数 User selectUser(String name,String area); 可以在xml ...

  10. SSL/TLS协议工作流程

    我看了CloudFlare的说明(这里和这里),突然意识到这是绝好的例子,可以用来说明SSL/TLS协议的运行机制.它配有插图,很容易看懂. 下面,我就用这些图片作为例子,配合我半年前写的<SS ...