linux计划任务

MYSQL
例:每天23点备份testdb数据库,备份文件名带有日期
1、创建脚本
[root@localhost ~]# vi bak.sh
#!/bin/bashmysqldump -uroot -p123456 testdb >/mysqlbak/testdb_`date "+%Y_%m_%d"`.sql
保存退出
2、计划任务
vi /etc/crontab(也可crontab -e)
* 23 * * * root /bin/sh /root/bak.sh
注1:执照以上脚本做成计划任务可能遇到这个情况(并非脚本问题):
sh /root/bak.sh ---备份成功(备份文件大小正常)
但是计划任务备份的文件名一样(备份文件大小为0)
mysqldump可以使用tab键,应该是设定了变量
which mysqldump 显示/usr/local/mysql/bin/mysqldump
使用以下命令查看未查出任何信息
ll /bin | grep mysqldump
ll /sbin | grep mysqldump 
ll /usr/bin | grep mysqldump 
ll /usr/sbin | grep mysqldump 
解决:ln -s  /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump (权限与mysql/bin下的权限一样)
设定最近的时段的计划任务检查自动执行是否正常备份数据。


===============================================================


注2:
1、date "+%Y_%m_%d" 返回时间格式为:2012_04_24
date "+%H:%M:%S" 返回时间格式为:15:43:20
2、计划任务的命令一定要使用完全路径,如果不知道,可使用which命令查看(which sh)

3、自动删除
find /data/website-bak/* -mtime +60 -exec rm -rf {} \;查找出/data/website-bak/下的60天前的文件(含文件夹)并删除
find /data/website-bak/ -mtime +60 -exec rm -rf {} \;查找出/data/website-bak下的60天前的文件如果website-bak60天未       更改内容,一并列出并删除。
find /data/website-bak/* -mtime +60 -type f -exec rm -rf {} \; 查找出/data/website-bak/下的60天前的文件夹并删除 
4、tar 方式:
mkdir -p /data/website-bak/`date "+%Y%m%d"` && cd /data/webroot &&( 如果要打包的文件使用绝对路径即使加上P,也会导致解压文件出现问题,会在指定的解决路径中,再生成/data/webroot /websitename,需要再mv)

tar czvf /data/website-bak/`date "+%Y%m%d"`/uc.`date "+%Y%m%d"`.tar.gz uc

 

====================================================================================

FAQ

1、备份数据库文件存在,大小为0

原因:which mysqldump查看命令位置:/usr/local/mysql/bin/mysqldump 没有在bin下

解决:ln -s /usr/local/mysql/bin/* /usr/bin

你可能感兴趣的:(Linux计划任务)