Shell脚本编程实战一:创建按天备份的脚本工具
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8241256.html
一:准备工作:创建归档目录 与 归档配置文件
归档目录:创建一个仓库目录,专门用于存放每日备份的文件。
:创建目录:mkdir 目录名
:修改目录权限:chmod 权限 目录名 #如果不修改权限,则默认不能在该目录下创建、删除内容
归档配置文件:一个文本文件,每一行是一个路径,表示一个待归档的文件或目录。
二:创建备份脚本
#!/bin/bash
#Daily Backup Util DATE=$(date +%y%m%d)
FILE=$DATE_backup.tar.gz CONFIG_FILE=归档配置文件路径
DESTINATION=归档目录路径 #检查配置文件是否存在
if [ -f $CONFIG_FILE ]
then
echo "Config File exit..."
else
echo "Config File doesn't exit..."
exit
fi #重定向输入,从配置文件读取内容
exec < $CONFILE_FILE #读取配置文件内容,把逐条路径进行校验,如果文件存在则把文件路径加到list变量中
FILE_NO=
read FILE_NAME while [ $? -eq ] #当上一条命令执行成功
do
if [ -f $FILE_NAME -o -d $FILE_NAME ]
then
FILE_LIST="$FILE_LIST $SILE_NAME"
else
echo "$FILE_NAME doesn't exit......"
fi
FILE_NO=$[$FILE_NO +]
read FILE_NAME
done #进行归档
sudo tar -czf $DESTINATION $FILE_LIST echo "Backup completed......"
exit
三:改变脚本文件权限,赋予可执行权限
四:运行脚本,进行归档
改进:
1)归档目录的目录层级
我们不可能把所以归档文件笼统地放在一个目录中,如果按时间来归档的话,我们不妨就用时间层级来组织归档目录。
总归档目录Backup
|
以年份命名的目录
|
一年中的月份目录
|
按日命名的目录\按年月日命名的备份文件
|
按年月日时命名的备份文件
2)在备份脚本中创建层级归档目录
#!/bin/bash
#Hourly Backup Util BASE_DIR=归档总目录
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
TIME=$(date +%Y%m%d%H)
#创建层级目录:-p 选项,如果目录存在,不会产生错误信息;目录不存在,则创建
mkdir -p $BASE_DIR/$YEAR/$MONTH/$DAY DESTINATION=$BASE_DIR/$YEAR/$MONTH/$DAY/$TIME_backup.tar.gz #=====接下来的就是遍历配置文件、打包,同上面 按日打包 脚本=============
Shell脚本编程实战一:创建按天备份的脚本工具的更多相关文章
- Bash脚本编程学习笔记05:用户交互与脚本调试
用户交互 在<学习笔记04>中我们有提到位置参数,位置参数是用来向脚本传递参数的一种方式.还有一种方式,是read命令. [root@c7-server ~]# read name alo ...
- 《Linux命令行与shell脚本编程大全》第十六章 控制脚本
一些控制脚本的方式:向脚本发送信号.修改脚本优先级,在脚本运行时切换到运行模式 16.1 处理信号 linux利用信号与运行在系统中的进程进行通信. 也可以通过对脚本进行编程,使其在收到特定信号时执行 ...
- 《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本
11.1使用多个命令 $date;who // 命令列表,加入分号就可以,这样会依次执行.参见5.2.1节 注意区分$(date;who),这个是进程列表,会生成一个子shell来执行 Shel ...
- linux shell脚本编程笔记(一): 构建基本脚本
1. echo -n str 打印不换行 2. 反引号来圈住命令传入变量 eg: 生成日志文件: #!/bin/bash today=`date +%y%m%d` ls /usr/bin ...
- Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量
我自己接触Linux主要是大学学习的Turbolinux --> 根据<鸟哥的Linux私房菜:基础篇>(第三版) --> 马哥的就业班课程.给我的感觉是这些课程对于bash的 ...
- mysql通过mysqldump实现备份,脚本编写
每日三点同步mysql备份任务 crontab -e 0 3 * * * sh /home/shell/mysql_bakup.sh >> /dev/null 2>&1 my ...
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便.快捷的操作,使得我们不再为Oracle本身丑陋.难用的UI而抱怨.由于我们一般 ...
- [转]Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
本文转自:http://www.cnblogs.com/wuhuacong/archive/2012/03/09/2387680.html Oracle中对数据对象和数据的管理,无疑都是使用PL/SQ ...
- 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- python 全栈开发,Day128(创建二维码,扫码,创建玩具的基本属性)
昨日内容回顾 1.app播放音乐 plus.audio.createPlayer(文件路径/URL) player.play() 播放音乐 player.pause() 暂停播放 player.res ...
- WCF服务寄宿Windows
windows服务的介绍 Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合.它没有用户界面,并且也不会产生任何可视输出.任何用户消息都会被写进Windows事件日志.计 ...
- C# 串口导致电脑蓝屏一个可能的原因
在某些win7电脑上, 如果使用SerialPort对象的Read(byte[] buffer, int offset, int count)方法读取端口数据时, 若端口接受缓存区的数据少于count ...
- bind this指针
var TEST = { msg: 'test', ping: function() { return this.msg }.bind(this /* this -> window */) }
- [SDOI2012]拯救小云公主
题解: 是一个不错的题目 首先我们可以考虑二分答案 然后变成判定性问题 对于每个画一个圆 当其会被阻断时就是答案 阻断有四种情况 左下 上下 左右 右上 但是这样是n^2a(n)*logn的 考虑直接 ...
- [ZJOI2012]数列
超级水的题还wa了一次 首先很容易发现其实就只有两个值并存 然后 要注意把数组初始化啊...可能后面有多余的元素(对拍的时候由于从小到大就没跑出错) #include <bits/stdc++. ...
- 016 SpringMVC中重定向
1.介绍 2.index <%@ page language="java" contentType="text/html; charset=utf-8" ...
- HBase 开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 首先, 搭建基于MyEclipse的Hadoop开发环境 相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文.可以去补下基础. 比如, CentOS图形界面下如何安 ...
- VB打开工程时出现不能加载MSCOMCTL.OCX
用记事本打开VBP文件找到这一行:Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX改为:Object={831FDD1 ...
- loj#2129. 「NOI2015」程序自动分析
题目链接 loj#2129. 「NOI2015」程序自动分析 题解 额... 考你会不会离散化优化常数 代码 #include<queue> #include<cstdio> ...