让LINUX后台自动对博客的数据进行备份
博客的搭建也有了一段时间了,大大小小的博文也写了有一些了,为了服务器避免数据丢失和保护这些宝贵的信息,可以创建一个自动备份的脚本,自动进行数据备份,同时可以忽略掉我上传的文件(放在下载页面以供下载https://www.mustenaka.cn/index.php/download/),按照日期时间进行归总
本篇涉及知识:【LINUX SHELL知识】【crontab调度】
1.编写备份数据脚本
由于本博客使用的是阿帕奇服务,故项目文件全部集中在/var/html/中,我们直接进行复制备份即可,在home目录下进行创建一个以日期为编号的文件夹表示
#!/bin/bash
#
#move and auto backup my blog website.
#
sav_path=~/blog_backup
org_path=/var/www/
echo "Backup begin."
echo "Time : $(date)"
now_date=$(date +%y_%m_%d)
echo "Will create folder $now_date in $sav_path"
cd $sav_path
mkdir $now_date
echo "craete $now_date successful"
cd $org_path/html
mv downloadfile ./..
cp -R $org_path/html/ $sav_path/$now_date/
cd ./..
mv downloadfile html/
echo "Backup successful"
一些细节的解释就是$(date +%y_%m_%d)的这个方法可以直接以日期【以下划线分割】给直接表示,本来我是想date+cut传参数进行书些的,结果这样子更加方便,然后cp -R XX XX命令之后表示复制项目到目标地点,需要的话可以使用zip或者tar格式进行压缩,这样更加省空间,此外还可以添加错误以及调用信息等手动导入到一个文件中,不过接下来我准备将这个信息导入到系统日志内所以这里就不手动创建书些了。
2.crontab
crontab:是LINUX中进行调度任务时,定时任务的守护进程,精确到秒的我们一般写自动运行脚本就需要利用到crontab,此外Linux还可以使用at命令等进行定时运行,但那种运行单次且不规范,适合简单的单次运行文件。
首先时编辑crontab,直接输入:
crontab -e
首次打开编辑模式他会询问采取什么编辑器进行编辑,他会推荐默认使用nano编辑器(另一个很著名的终端编辑器,对标VIM),就我个人而言还是习惯于Vim的编辑方式,所以注意选择回vim,如果不慎选中nano也可以修改配置文件进行回复。
接着我们看见一堆貌似看不懂的数字和星号以及一个文件执行路径,同时还有两个>表示文件导出生成到目标地点
其中
- 前五段数字+星号表示执行周期与时间
- 绝对路径文件名表示执行的shell脚本【注意只能执行shell脚本,如果需要执行其他需要令行调度】
- 信息导出
一个写的很不错的关于crontab的文章推荐:https://www.cnblogs.com/ftl1012/p/crontab.html
关于时间的例子:
# 每月的最后1天
0 0 L * * *
说明:
Linux
* * * * *
- - - - -
| | | | |
| | | | +----- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- minute (0 - 59)
网上找到的一个crontab执行时间计算工具,还是挺方便的
https://tool.lu/crontab/
在明白完crontab的使用方式之后,我们可以试着写一波自动执行调度,如下表示【每周日晚上凌晨零点59分执行autobak.sh(自动备份)脚本,并输出错误以及执行信息】:
59 0 * * 0 /root/autobak.sh > /dev/null 2>&1 &
在弄完这些步骤之后其实自动执行并不会生效,因为crontab并没有文件执行权限,我们还需要对自动备份脚本文件进行权限修改,让属于root的脚本变为crontab可用脚本。执行:
chmod +x autobak.sh
#上下两种任选其一即可#
chmod -R 777 autobak.sh
当文件变为crontab可用时即可自动执行,这点很容易坑到小白,完成之后可以使用crontab -l命令查看是否配置成功。
0 条评论