CentOS安装crontab 定时备份文件夹

一、 编写脚本
编写一个脚本文件,使脚本可以执行备份命令。 
例如,将文件目录 /home/backups/balalala 备份到/home目录下,并压缩。
1. 创建脚本
命令格式: touch 路径/文件名.sh 
例如: 
输入命令:touch /home/backup.sh 

2. 写入命令
首先进入脚本:vi命令 
vi /home/backup.sh 
在脚本内写入:
 #! /bin/sh
 mkdir /home/plantask/temp
 #创建一个临时文件 保存备份的路径
 cp -r /www/xilan /home/plantask/temp
 #数据存在plantask目录下,备份到temp目录下,所以先将数据拷过来
 tar -zcPvf /www/backups/xilan$(date +%Y%m%d%H%M%S).tar.gz /home/plantask/temp  -->时间精确到毫秒
 #将数据所在文件夹plantask打包
 rm -rf /home/plantask/temp
  
 find ./ -mtime +30 -name "*.tar.gz" -exec rm -rf {} ;
 #删除改文件夹下超过30天的文件


3. 执行脚本文件
直接手动执行脚本文件。 
命令格式:sh 路径/文件名.sh 
例如:sh /home/backup.sh

有时候会出现find:未知的断言"-name *.tar.gz -exec rm",

把最后一行重新写下或者再拷贝一个改下就好了,至于什么原因,暂时没找出来,对比了报错之前的内容,也没看出来有什么区别,希望大神看到了给解答下。

find /home/bkebpaper/ -mtime +1 -name "*.tar.gz" -exec rm -rf {} ;


二、 设置定时执行本脚本。
例如:设置脚本每7天执行一次。
1. 安装crond
如果没有安装crond服务就先装上服务。 
检查服务状态:service crond status
2. 修改crontab内容
输入命令:crontab –e 
进入后继续输入命令:0 0 /7 *  sh /home/backup.sh   ---->一定要加上sh命令


设置为每7天执行一次脚本文件 
然后,保存退出:wq
 0 */1 * * * sh /home/plantask/backup.sh  #每小时执行一次
 */1 * * * * sh /home/plantask/backup.sh #每分钟执行一次 用于调试

sh脚本前面五个字段分别表示分钟(0-59)、小时(0-23)、日(1-31)、月(0-12)、星期几(0-6)后面的为脚本所在目录   --->一定要加上sh命令

3. 重新启动crond服务
输入命令:service crond restart
至此配置完成!

 **************************************************************************************************

安装crontab:
[root@CentOS ~]# yum install vixie-cron
[root@CentOS ~]# yum install crontabs
说明:
vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
//+++++++++++++++++++++++++++++++++++
cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
加入开机自动启动:
chkconfig --level 35 crond on

*************************************************************************

1,crontab命令

功能说明:设置计时器。

语  法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command

参  数: 
 -e  编辑该用户的计时器设置。 
 -l  列出该用户的计时器设置。 
 -r  删除该用户的计时器设置。 
 -u<用户名称>  指定要设定计时器的用户名称。

2,crontab 格式

基本格式 :
* *  *  *  *  command
分 时 日 月 周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间

crontab命令主要有3个参数:

  -e :编辑用户的crontab。

  -l :列出用户的crontab的内容。

  -r :删除用户的crontab的内容。

  执行crontab -e,将自动打开编辑器,你可以编辑自己的crontab文件,语法和 /etc/crontab 文件一样,不同的只是,不必再指出执行的用户,编辑后保存即可。

  crontab -l用来查看自己的crontab文件内能,crontab -r删除自己的crontab。

原文地址:https://www.cnblogs.com/baobeiqi-e/p/10559047.html