$tar -cvf /tmp/bak1.tar /home/username/Downloads <--仅是打包
$tar -zcvf /tmp/bak2.tar.gz /home/username/Downloads <--打包后用gzip压缩
$tar -jcvf /tmp/bak3.tar.bz2 /home/username/Downloads <---打包后用bzip2压缩
注:参数f是指定打包后的文件名,其后必须跟包的名!
第一:现在要把打包备份的文件命名为time.log.tar.gz
$time=`date +%Y/%m/%d_%H:%M:%S`
$tar -zcvf /tmp/$time.log.tar.gz /home/username/Downloads
第二:每隔20分钟备份一次
test.sh
#! /bin/bash
$time=`date +%Y/%m/%d_%H:%M:%S`
$tar -zcvf /tmp/$time.log.tar.gz /home/username/Downloads
然后,编写crond的时间任务表
$crontab -e
填写:*/20 * * * * FilePath/tesh.sh
保存退出!
重启crond
$/etc/init.d/cron restart
用crontab -l可查看定时任务是否已经配置完成!
第三:当备份文件超过120分钟时自动删除
怎么让文件存在120分钟后自动删除呢?
思路:每次脚本执行时,读取现有的备份文件列表,判断现有的备份文件是否存在超过20分钟,超过就删除!并退出脚本!(120是20的倍数)
ls -l log.tar.gz | awk '{print $8}' (awk默认空格分隔,无需加-F)
输出:文件的创建时间
怎么判断这个创建时间到现在是否超过了120分钟??
“linux date 能相减吗” 得到data --data='2 hours age' 输出结果竟然提前两个小时,这也就是说两个时间是能够相比较的!(准确的说应该是比较两个日期的大小)
shell 比较两个日期的大小!方法是先把日期转换成时间戳格式,再进行比较。(用文件创建时的时间和当前时间后退120分钟相比)
。。。。。。。。。。。。。。。。。
find . -name "*.tar.*" -cmin +2 | xargs rm 文件
但是-cmin +2这个地方有问题!2是小时,若用分钟,应是120