这样方便文章的更新,-p后面加你数据库的密码

作者:美狮美高梅官方网站

Hexo里面_pots文件夹存放所有的文章,以防万一我备份到了坚果云上(本来打算上Dropbox,翻墙不方便,而且没必要就将就了一下)。这样方便任意电脑都可以写东西,然而在外面写完了东西,因为博客在家里机器上,还是没法立即更新,于是想写个做一个Crontable,定期Deploy,这样方便文章的更新。

如题,最近想到自己在电脑上自定义的设置实在太多,想到以后万一换电脑,或者电脑出意外了怎么办,数据实在是太重要了。有什么办法呢?而且不需要经常的提醒自己去手动备份。

    例如mysql举例子 :

  1. 文章备份

我的解决方案是:运行定时脚本 + 坚果云同步盘;

     需要先进行备份:备份方法使用的是mysqldump命令

坚果云支持将一个文件夹同步至云上,同步后,你在这个文件夹的任何操作都会同步至云上,这样就达到了可以随时写文章的目的

1.设置定时任务,来运行脚本

用到的命令再linux或者类Unix系统下有一个crontab命令,输入sudo crontab -e(最好加上sudo,避免权限问题)

图片 1

在终端中输入

因为我在这里已经有定义了一个运行backup.sh脚本的定时任务,如果你之前没有定义过的话,这里应该是空白的。

图片 2

出现nano的编辑界面

1. 在某个目录下新建一个backupDataBase.sh脚本文件,输入备份数据库的脚本,这里你可以用vim backupDataBase.sh 编辑这个脚本。

图片 3坚果云

讲一下这个命令的设置格式

M H D m d command

M: 分(0-59)
H:时(0-23)
D:天(1-31)
m: 月(1-12)
d: 周(0-6) 0为星期日

sudo crontab -l 显示目前所有的任务
sudo crontab -r 删除所有的任务
sudo crontab -e 编辑任务
举例:
如果将5个时间设置点都设为*号的话表示,每分钟执行一车后面的这个命令
* * * * * date>>echo "done!"

20 12 * * 0,6 date>>/Users/TianYu/我的坚果云/myScript/backup.sh
我这个任务设置的意思是,每个星期的周六和周日的中午12点20分执行后面这个backup.sh脚本,写好之后保存退出。

#!/bin/bash  

  1. 设置定时任务

2.写好要运行脚本

#! /bin/bash
#备份.zshrc文件
cd ~
cp -rf /Users/TianYu/.zshrc /Users/TianYu/我的坚果云
cd /Users/TianYu/我的坚果云/
mv .zshrc zshrc备份文件
echo "backup task done!"

我这个脚本是用来保存.zshrc的zsh的配置文件,里面就是写一些需要手工写的命令,卸载这个文件里,通过设置定时任务,定时调用这个脚本来实现自动备份。而我采用的是坚果云的同步盘,当然你也可以自己选择喜欢的同步网盘。只要往同步文件夹中写入文件就会自动同步到云端,美滋滋!

最后一步,也是最重要的,给这个脚本运行权限。终端中输入:sudo chmod +x ./backup.sh

图片 4

赋予运行权限

mysqldump -uuser -   -ppassword dataBaseName | gzip > /home/meter/mysqlbackup/dataBaseName_$(date +%Y%m%d_%H%M%S).sql.gz

只针对Linux,使用crontable -e编辑一个crontab。 可以设置为

3.定时任务启动完成

到时候每周的周六和周日都会自动保存到云端了,但是有一个注意点,一旦电脑在要运行定时任务时处于关机或者睡眠状态时是无法执行这个任务的,所以最好选择自己一定会开着电脑的时间将其设置为备份时间。

find /home/xxx/xxxx/ -mtime +5 -name "*.sql" -exec rm -rf {} ; 

`

-u后面加你的用户名,-p后面加你数据库的密码

  • */3 * * * python /xx/xx/xx.py`

后面find命令是删除距离现在5天前的备份文件。

这个cron表示没3小时执行一次操作,具体crontab不在这详细讲了,这里我用一个python脚本(shell也可以。)

2.学习crontab用法

注:这里会遇到一个坑,Mac里编辑crontable不支持VI,直接使用crontable -e 会报错,使用如下命令可以解决问题export EDITOR=vim 或者export EDITOR=nano

crontab简介:

  1. 编辑脚本

        crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

接下来就是写个执行hexo d -g的脚本了,几行代码就可以搞定。具体代码就不展示了。

打开crontab:

这里讲个3坑:

    打开crontab脚本 要用 crontab  -e 命令 第一次打开会让你选择是nano 还是vim编辑 根据自己的方式选个就行。

  1. crontab中执行脚本,脚本里面的路径必须是绝对路径,包括你执行的一些系统命令也要给命令的路径!!

crontab命令认识:

例如:

    # For details see man 4 crontabs

使用tcpdump必须使用/usr/sbin/tcpdump 不然就不会执行。

# Example of job definition:

  1. 为了执行hexo的命令,要做一个软链接,不然会报错

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

/usr/bin/env: node: No such file or directory

# | | .---------- day of month (1 - 31)

具体命令:

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

ln -s 你node的路径 /usr/bin/node

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

  1. 如果你是Mac,那么你执行软连接是不能的即时你是root用户,因为Mac有个Rootless保护机制,会阻止你的某些操作。所以你必须关掉这个保护机制。

# | | | | |

  • 重启Mac 按住command +R 进入安全模式,
  • 点击实用工具,进入终端。输入csrutil disable
  • 重启

# * * * * * user-name command to be executed

这样完成后写好脚本。就OK了。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

因为踩的几个坑整了半天才完成所有工程,这样自动化完成。随时可以在公司开小差写文章了=。=

minute   hour   day   month   week   command

其中:

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

本文由美狮美高梅官方网站发布,转载请注明来源

关键词: