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版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- SqlServer索引碎片
1.产生碎片的操作 通过sys.dm_index_physical_stats来查看,索引上的页不在具有连续性时就会产生碎片,碎片是索引上页拆分的物理结果. (1).插入操作: INSERT操作在聚集 ...
- Javascript中的函数(三)
一:概述 函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解.JavaScript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的.通过函数对象的性质 ...
- .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...
- VMvare虚拟机如何删除安装的ubuntu操作系统
VMvare虚拟机如何删除安装的ubuntu操作系统呢??? 这个问题其实在我刚开始接触虚拟机和ubuntu操作系统的时候对于如何删除操作系统是一件很苦恼的事情,因为按照书本的步骤,根本看不懂如何操作 ...
- 搬家通知博文地址(将博客搬到CSDN)
(为了确认是您本人在申请搬家,请在原博客发表一 篇标题为<将博客搬至CSDN>的文章,并将文章地址填写在上方的"搬家通知博文地址"中.)
- PKUWC2019游记&&WC2019游记
今天好颓,不想写代码了,写写游记 PKUWC2019游记&&WC2019游记 PKUWC2019游记 提前两天就来了中山纪中,考了两天模拟,第一天比较正常,但是可做题只有T3,第二天非 ...
- 高德地图web端笔记;发送http请求的工具类
1.查询所有电子围栏 package com.skjd.util; import java.io.BufferedReader; import java.io.InputStream; import ...
- hashCode方法的作用?
(1)前言,想要明白hashCode的作用,你必须要先知道Java中的集合. Java中的集合(Collection)有两类,一类是List,再有一类是Set. 前者集合内的元素是有序的,元素可以重复 ...
- idea颜色主题
作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com IDEA 主题样式 === 这个垂直线的 颜 ...
- 在Editplus直接运行程序的步骤
https://www.cnblogs.com/myitroad/p/4841875.html