linux数据备份指导
步骤
1,写好需要备份的脚本,以及crondtab文件,放入对应位置
参考文件如下
2,可单独执行进行验证脚本的正确性;确认crontab安装成功执行
crontab -l
出现错误可依照下面办法解决(后面有)
单独执行需要对文件赋权限
chmod +x backup.sh
然后可单独执行验证脚本的正确性
3,添加文件到etc/
把文件copy到开机启动项中cp /usr/local/wykj/bin/crontab /etc/
chmod +x crontab
4,设置开机启动
设置crond服务为自启动
[root@MiWiFi-R3-srv bin]# chkconfig crond on
systemctl list-unit-files
5,启动crontab
service crond start
几个常用的服务相关的命令
#systemctl enable crond.service //让服务开机启动
# systemctl disable crond //让服务开机不启动
# systemctl status crod //查看状态
# systemctl stop crond //停止服务
# systemctl start crond //启动服务
# systemctl restart crond //重启服务
# systemctl is-enabled crond //检查服务是否开机启动
验证是否备份成功可到对应位置查看备份文件
6,异地备份需要配置ssh免密登录(已有文档此处就不写了)
7,免登录配置好后,可在脚本中添加scp的命令,添加完可先单独执行测试下,验证成功可重启crond服务即可,(为确保可自动执行,可到对应设备位置查看异地备份的文件)
问题
1,问题解决办法:下面报错是缺少bzip2包
yum install -y bzip2
安装后就不报错了。
2,遇见问题:提示no crontab for root
使用命令查询crontab 任务时,一直提示:no crontab for root 。查看了一些资料,说是crontab在初始时,设置了一次编辑方式,所以试了一下crontab -e的方式编辑,即在命令行,输入 crontab -e ,进行编辑页面,输入定量执行的脚本
*/1 * * * * root /data/bakdb.sh? > /data/bak.log 2>&1
crontab -e的使用方式与vi编辑器相同, 配置成功后 使用命令crontab -u root -l 可以查看当前定时任务,具体流程:
cd etc
在etc目录下,执行 crontab -e
在插入模式下输入
保存
使用命令 crontab -u root -l 可以查看当前定时任务, 成功!
3,查看日志遇见错误 BAD FILE MODE (/etc/crontab)
该错误是权限引起的
解决办法 :更改权限
chmod 644 /etc/crondtab
4,查看日志遇见错误 FAILED (loading cron table)
解决办法:
在Linux下查看是否开启了SeLinux,可以用下面两种方法
1: 可以使用下面命令sestatus,SELinux status 为enabled表示开启了SeLinux功能
[root@DB-Server ~]# setenforce 0
[root@DB-Server ~]# getenforce
Permissive
[root@DB-Server ~]# setenforce 1
[root@DB-Server ~]# getenforce
Enforcing
[root@DB-Server ~]#
Linux 定时任务Crondtab简单了解
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,
与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,
并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,
如果有要执行的任务,则自动执行该任务。
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
查看crontab执行的日志
cat /var/log/cron
查看mail
cat /var/spool/mail/root
find . –mtime中的参数n (了解)
find . –mtime n中的n指的是24*n, +n、-n、n分别表示:
+n: 大于n
-n: 小于n
n:等于n
但是man find里这样的解释还是比较令人费解的,不如直接看find . -mtime 中的用法
find . –mtime n: File waslast modified n*24 hours ago.
最后一次修改发生在距离当前时间n*24小时至(n+1)*24 小时
find . –mtime +n:
最后一次修改发生在n+1天以前,距离当前时间为(n+1)*24小时或者更早
find . –mtime –n:
最后一次修改发生在n天以内,距离当前时间为n*24小时以内
Linux 命令find exec rm(了解)
-exec 必须由一个 ; 结束,而因为通常 shell 都会对 ; 进行处理,所以用 \; 防止这种情况。
{} 可能需要写做 '{}',也是为了避免被 shell 过滤
find ./ -type f -exec grep iceskysl {} /dev/null \;
./表示从当前目录找
-type f,表示只找file,文件类型的,目录和其他字节啥的不要
-exec 把find到的文件名作为参数传递给后面的命令行,代替{}的部分
-exec后便跟的命令行,必须用“ \;”结束
常用的find命令:
#find ./ -type f -name "*.cpp"|xargs grep "test" -n
#find . -name "*cpp" -exec grep "test" {} \; -print
# find / -name *.log //指定目录 要搜索的文件名
# find / -name core print //检查系统是否有巨大的CORE文件,可直接删除
# find . –ctime | print //列出当前目录中在当前24小时内更改的所有文件
# find /tmp -user "xxxx" -exec rm {} \; //找到tmp目录下xxx用户生成的文件并删除
eg: find /tmp -user "kunlun" -exec rm {} \;
查看执行记录
有这个提示时就可根据该路径查看信息