在Linux中定时备份文件
来源:互联网 发布:最终幻想猫女捏脸数据 编辑:程序博客网 时间:2024/05/01 08:06
WAHT IS THIS
在这篇博客中,笔者介绍了怎么在Linux中备份文件,使用到的有crontab、tar和shell脚本相关知识。笔者最近在学习中会写一些demo程序,有时候一些误操作会让自己几个小时的成果丢失,例如对其他文件进行误操作,覆盖了其它重要文件,所以就写了几个脚本定时备份重要的文件,保护工作成果。
STEP 1
编写打包文件的脚本。脚本的目的是:将当前目录下重要的文件打包到tarfile.tar.gz中。重要文件需要在脚本中指定,或者给出重要文件的扩展名。以下是打包脚本tarfile.sh的内容:
#!/bin/bash#Author:kevin#Version:1.0#Create time:20161130#Description:TARGET="allfile.tar.gz"SRC="*.c *.sh *.py"if [ -f $TARGET ]then rm $TARGET echo "delete old file" fitar -zcvf ./$TARGET ./$SRC >> nullif [ $? -eq 0 ]then echo "create new tar file success !"else echo "create tar file failed!"fiprintf "\a"exit 0
在shell脚本中,你可以修改TARGET的值来设定打包后生成的文件名,默认是tarfile.tar.gz,还可以修改SRC的值来设定需要打包的文件。这个脚本中SRC=”*.c *.sh *.py”,意思是,将所有以.c 和.sh以及.py结尾的文件都打包起来。这个脚本可以单独运行,也可以由下面会讲到的总控脚本调用执行。
STEP 2
编写总控脚本。有可能你有多个文件夹中的文件需要备份,但是每个文件夹中的重点文件都不同,所以可以在不同的文件夹中部署不同的tarfile.sh。总控脚本的作用就是一次执行tarfile.sh脚本,将不同文件夹中的重要文件分别打包。以下是总控脚本tarballfile.sh
#!/bin/bash#Author:kevin#Version:1.0#Create time:20161130#Description:MYPWD="/media/sf_test/"TARGET="tarfile.sh"LOGFILE='logtarfile.log'cd $PWDstring=`ls -l $PWD | awk '/^d/ {print $NF}' ` record=''for i in $stringdo echo "---------------------" cd $MYPWD'/'$i echo $i #cd $i if [ -f $TARGET ] then echo "find file " ./$TARGET else echo "can not find file" fidone cd $MYPWDecho -e "[`date '+%Y%m%d-%H:%M'`] :creat backup file " >> $LOGFILEecho "create log file success"printf "\a"exit 0
其中可能根据自己的需要修改一下变量值:
- MYPWD
MYPWD是你总控脚本放置的目录,总控脚本应该放置在所有需要打包的目录的上一级,例如:
这是总目录,总目录下有c语言学习、java学习、python学习的分目录,总控脚本就可以放置在总目录下;MYPWD就是总目录的路径。
- TARGET
TARGET是STEP 1中的脚本的名称,默认是“tarfile.sh”
- LOGFILE
LOGFILE是日志的名称,默认是“logtarfile.log”,可以根据需要修改。
试着执行以下总控脚本,可以看到如下执行结果:
从执行结果可以看出,在c_learning文件夹中放置了tarfile.sh脚本,它就会进行备份,在git_learning中没有放置脚本,它就不进行备份。
可以查看一下日志文件logtarfile.log:
可以看出,成功创建了备份文件。
STEP 3
接下来就是创建一个定时任务,定时执行总控脚本了。
-先安装crontab:yum install crontabs
-添加任务:crontab -e,进入后添加任务选项。
格式:f1 f2 f3 f4 f5 program
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行
当 f1 为 /n 时表示每 n 分钟个时间间隔执行一次,f2 为 /n 表示每 n 小时个时间间隔执行一次
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行
例如10分钟定时备份一次就是这样写:
*/10 * * * * /media/sf_test/tarballfile.sh
-启动crontab
service crond start启动服务service crond stop关闭服务service crond restart重启服务
至此,定时任务添加完毕,再也不怕误操作文件丢失啦!
- 在Linux中定时备份文件
- linux-------定时备份文件
- LINUX 定时备份文件
- 定时备份文件
- linux svn定时备份文件 + 文件上传
- Linux下Debian包定时备份数据库文件和删除备份文件
- Linux定时备份文件系统,并删除7天前的备份文件
- 定时删除过期备份文件
- 定时启动备份文件
- 使用shell定时备份文件
- 在DB2中检查备份文件的完整性
- sql2000备份文件在sql2005中还原
- 在linux中定时调用Java程序
- 在linux中设置定时启动程序
- 在Linux中做定时执行
- linux备份文件
- 用winrar定时压缩备份文件
- 定时备份文件的BAT脚本
- 学习笔记之JavaSE(44)--IO流6
- MySql下载安装及问题解决
- Android 统计apk中方法的数量
- 计算机为什么使用二进制,加减法计算为什么使用补码,补码到底是怎么回事?
- 二叉查找树C语言实现及其可视化
- 在Linux中定时备份文件
- java并发集合源码分析之currentHashMap分段加锁分析
- 各个代表
- 怎样给黑白图片上色
- leetcode No187. Repeated DNA Sequences
- 能编译成功但是会有许多红色警告解决办法,Xcode从SVN上面check Out
- jsp 回显显示select
- Python 面向对象、继承部分、正则表达式
- 前端代码调试:Webstorm调试js