转载请注明原文地址: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脚本编程实战一:创建按天备份的脚本工具的更多相关文章

  1. Bash脚本编程学习笔记05:用户交互与脚本调试

    用户交互 在<学习笔记04>中我们有提到位置参数,位置参数是用来向脚本传递参数的一种方式.还有一种方式,是read命令. [root@c7-server ~]# read name alo ...

  2. 《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    一些控制脚本的方式:向脚本发送信号.修改脚本优先级,在脚本运行时切换到运行模式 16.1 处理信号 linux利用信号与运行在系统中的进程进行通信. 也可以通过对脚本进行编程,使其在收到特定信号时执行 ...

  3. 《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本

    11.1使用多个命令 $date;who   //  命令列表,加入分号就可以,这样会依次执行.参见5.2.1节 注意区分$(date;who),这个是进程列表,会生成一个子shell来执行 Shel ...

  4. linux shell脚本编程笔记(一): 构建基本脚本

    1. echo -n str        打印不换行 2. 反引号来圈住命令传入变量 eg: 生成日志文件: #!/bin/bash today=`date +%y%m%d` ls /usr/bin ...

  5. Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量

    我自己接触Linux主要是大学学习的Turbolinux --> 根据<鸟哥的Linux私房菜:基础篇>(第三版) --> 马哥的就业班课程.给我的感觉是这些课程对于bash的 ...

  6. mysql通过mysqldump实现备份,脚本编写

    每日三点同步mysql备份任务 crontab -e 0 3 * * * sh /home/shell/mysql_bakup.sh >> /dev/null 2>&1 my ...

  7. Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作

    Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便.快捷的操作,使得我们不再为Oracle本身丑陋.难用的UI而抱怨.由于我们一般 ...

  8. [转]Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作

    本文转自:http://www.cnblogs.com/wuhuacong/archive/2012/03/09/2387680.html Oracle中对数据对象和数据的管理,无疑都是使用PL/SQ ...

  9. 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

随机推荐

  1. Windows C#入门环境搭建

    Windows C#入门环境搭建 1. 安装Microsoft .NET Framework目录: C:\Windows\Microsoft.NET\Framework,查看已经安装的版本. 如果未安 ...

  2. html中hr的各种样式使用

    第一种: <hr style=" height:2px;border:none;border-top:2px dotted #185598;" /> height:2p ...

  3. django项目验证码(PIL库实现)

    作个记录,这个东东,是可以到处照搬的. WINDOWS下和LINUX下,字体对象获取方式不一样. 为了用户体验,字体大小也重要的. 另外,为了照顾个别字母认不出来的人,提供刷新功能. 一,验证码函数 ...

  4. Jetty部署

    http://www.orchome.com/127 https://blog.csdn.net/zhanngle/article/details/77591526

  5. CentOS 用挂了dev/sda1:UNEXPECTED INCONSISTENCY;RUN fsck MANUALLY .

    dev/sda1:UNEXPECTED INCONSISTENCY;RUN fsck MANUALLY .(i.e. ,without -a or -p options)fsck died with ...

  6. HDU1512 ZOJ2334 Monkey King 左偏树

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - ZOJ2334 题目传送门 - HDU1512 题意概括 在一个森林里住着N(N<=10000)只猴子. ...

  7. BZOJ2669 [cqoi2012]局部极小值 状压DP 容斥原理

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2669 题意概括 有一个n行m列的整数矩阵,其中1到nm之间的每个整数恰好出现一次.如果一个格子比所 ...

  8. split应用

    /* input:"5 35 53 2 3" output:"2 3 5 35 53" */ public class RegexDemo4 { public ...

  9. Linux学习之用户管理命令与用户组管理命令(十五)

    Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel ...

  10. 【Java并发核心六】CompletionService

    CompletionService 接口的功能是以异步的方式一边生产新的任务,一边处理已完成任务的结果,这样就可以将执行任务与处理任务分离开. CompletionService 仅有一个实现类 Ex ...