1:目标

      实现在图像化界面输入需要备份的源文件路径、目标路径,定时的时间、然后通过输入的信息,把需要备份的源文件打包放到指定的目标路径下以执行定时任务的时间为子目录
      把/shell/l.txt文件每分钟备份打包一次,放到/lile目录下面
      1)输入源文件路径(必须为绝对路径
      

     2)输入目标目录
      

     3)输入定时的时间
      

 
实现效果:
     

 
脚本文件:
 
1)实现图形化界面以及把获得的输入信息放到指定的位置
#!/bin/bash
input_sourcefile_location(){
dialog --title "Input you base information" --form "Please enter you information about mysql backup information: (Please input Absolutely location) \nThe source location is you need backups file" "The source file location:" "" > /tmp/source.location
result=$?
if [ $result -eq ] ;then
echo -e "\e[2J\e[1;1H"
exit ;
elif [ $result -eq ] ;then
echo -e "\e[2J\e[1;1H"
exit ;
fi
input_destination_dir
} input_destination_dir(){
dialog --title "Input you base information" --form "Please enter you information about mysql backup information: (Please input Absolutely location) \nThe distination dir (you only need input the dir,everydays back file will output the dir where use date is dir) is you need backups file" "The destination dir location:" "" > /tmp/destination_dir
result=$?
if [ $result -eq ] ;then
input_sourcefile_location;
elif [ $result -eq ] ;then
echo -e "\e[2J\e[1;1H"
exit ;
fi
set_crontab_time
}
set_crontab_time(){
dialog --title "Input you base information" --form "Please enter you information about mysql backup information: \nThe crontab seting ,minutes,hours,day,mouth,week (eg:* */2 * * *) " "The minutes set:" "" "The hours set:" "" "The day set:" "" "The month set:" "" "The week set:" "" > /tmp/crontab
result=$?
echo $result > lll
if [ $result -eq ] ;then
input_destination_dir
elif [ $result -eq ] ;then
echo -e "\e[2J\e[1;1H"
exit ;
fi
crontab_exec
}
crontab_exec(){
cat /tmp/crontab |tr "\n" " " > /tmp/day
sed -i 's/$/export DISPLAY=:0.0 ;gnome-terminal -x \/bin\/bash -c "\/shell\/2.sh 2>>\/tmp\/log" /g' /tmp/day
cat /tmp/day >> /var/spool/cron/root
echo >> /var/spool/cron/root
}
input_sourcefile_location
 
     2)对输入的信息进行处理

#!/bin/bash
dirname=`date +%Y%m%d%H%M`
destination_dir=`cat /tmp/destination_dir`
source_file=`cat /tmp/source.location`
source_dir=`echo ${source_file%/*}`
file_name=`awk -F / '{print $NF}' /tmp/source.location`
tar_file=$file_name.tar.gz if [ ! -d $destination_dir ] ;then
mkdir -p $destination_dir
fi
mkdir $destination_dir/$dirname
cd $source_dir
tar -zcf $tar_file $file_name
cp $tar_file $destination_dir/$dirname
rm -rf $tar_file
 
遇到的坑:
1:脚本文件里写的函数千万要注意,不要用命令去做函数名,在第一个脚本的时候把crontab做为函数名了,怎么都是不对的,弄了一上午
 
2:crontab要注意的是,新建的crotab定时任务不会马上执行,至少要两分钟
 
3:注意使用crontab file,如果你用crontab file,会把原来的定时任务全部给覆盖掉
 
4:把一个文件的换行符替换成空格符:tr "\n" " " filename
 
5:echo ${source_file%/*}表示删除/*以后的,%表示非贪婪匹配
 
6:crontab -e定时的任务是放在/var/spool/cron/root里
 
7:执行crontab的时候,报错,在后面加上一行空行即可
"cronfile1":1: premature EOF
errors in crontab file, can"t install.
 
 
 
 
 
 
 
 
 
 
      

shell脚本实现定时备份某文件的更多相关文章

  1. 用shell脚本实现定时备份数据库

    1.备份数据库的方法 可以使用命令查看 ls  /usr/local/mysql/bin 这个mysqldump就是系统内置的用来备份数据库的工具. 2.实现方法 ①先随便进入一个位置创建一个目录 ② ...

  2. 【shell脚本】定时备份日志===logBackup.sh

    定时备份日志 设置执行权限 [root@VM_0_10_centos shellScript]# chmod a+x logBackup,sh 脚本内容 [root@VM_0_10_centos sh ...

  3. 【shell脚本】定时备份数据库===dbbackup.sh

    定时备份数据库是很有必要的 一.脚本内容 [root@localhost dbbackup]# cat dbbackup.sh #!/bin/bash #备份数据库 mysqldump -uroot ...

  4. shell 脚本实现定时备份mysql数据库

    首先要知道直接在脚本中输入mysql的密码是不被允许的,但是我们可以曲线救国 1. 在新建一个文件专门用来存储用户密码 如: vim ./.mysql.conf [mysqldump] user=yo ...

  5. shell脚本----周期压缩备份日志文件

    一.日志文件样式 二.目标 1.备份压缩.log结尾&&时间样式为“date +%Y%m%d”的日志文件(如:20170912.20160311等) 2.可指定压缩范围(N天前至当天) ...

  6. CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存

    CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存来自:互联网 时间:2020-03-22 阅读:114以下情况可能造成Linux内存占用过高服务配置存在直接分配错误,或隐性分 ...

  7. Shell脚本调用ftp上传文件

    Shell脚本调用ftp上传文件 1.脚本如下 ftp -n<<! open x.x.x.x ###x.x.x.x为ftp地址 user username password ###user ...

  8. Centos上通过shell脚本实现数据库备份和还原

    最近有个这样的需求,通过shell脚本实现数据库备份还原,最后通过网上查询自己测试实现,将脚本分享给大家 1.数据库备份脚本 #!/bin/bash ds=`` list=`date +%Y`/`da ...

  9. 七牛云qshell工具定时备份空间文件到本地

    qshell 是利用七牛文档上公开的 API实现的一个方便开发者测试和使用七牛API服务的命令行工具,使用该工具可以实现很多的功能,今天就分享一下利用qshell定时备份空间文件到本地 1.下载qsh ...

随机推荐

  1. 【读书笔记】Cronjob原理及源码分析

    原文链接:https://mp.weixin.qq.com/s?__biz=MzI0NjI4MDg5MQ==&mid=2715291842&idx=1&sn=e605f9b40 ...

  2. android --------- 嵌套unity出现 your hardware does not support this application,sorry!

    最近遇见一个这个的问题 ,我在Android端接入Unity3D时出现的问题 问题是打开app直接弹出下面的弹框 点击ok 就退出了 遇到这样的问题 是因为libs文件夹的so文件出现了问题: 解决办 ...

  3. linux下NFS实战

    系统环境 系统平台:CentOS release 6.8 (Final) NFS Server IP:172.16.55.6 防火墙关闭 SELinux=disabled 安装NFS程序包 1.查看系 ...

  4. MySQL三层循环

    begindeclare i int;  #定义i变量declare j int;  #定义j变量declare k int;  #定义k变量set i=1;set j=1;set k=1;while ...

  5. 【PAT】我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...

  6. Linux c读取系统内存使用信息

    系统的内存使用信息能够在虚拟文件系统/proc/meminfo中找到,如图 所以只要打开/proc/meminfo文件,然后从中读取信息就好了 #include <stdio.h>#inc ...

  7. Mac上svn报错解决方案

    具体的报错信息为:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing ...

  8. elastic search 常用查询

    1.查询mapping curl -X GET "10.0.38.111:1200/metric_data_bus_2018-08-07/_mapping/data_bus?pretty&q ...

  9. 哈希值、HashSet、LinkedHashSet

    一.哈希值 1. 哈希值其实就是一个int数字,我们可以把哈希值看成对象的一个标识,Object中的hashCode方法,可以获取到对象的哈希值 2. Object中的hashCode方法是根据地址值 ...

  10. traceroute命令初探

    一.学习目标 了解traceroute基本概念 了解traceroute工作原理及详细过程 熟悉traceroute常用命令 一些注意点 二.traceroute基本概念 traceroute (Wi ...