前言
由于一些莫名其妙的原因,隔一晚上,博客系统就会发生一些错误。再加上自己的一些瞎操作,导致之前的数据文件惨遭丢失…… ,尽管通过复制保留了一些文章的内容,但是在排版以及链接方面有所丢失。
为了避免这种情况,决定添加一个定时自动备份到
github的shell脚本.
一、准备工作
因为用的是Halo博客系统,所以只需要备份这一个目录~/.halo 就OK。因为这个系统他的用户数据和程序本身是完全分开的(数据库db,上传的附件upload,配置文件application.yaml以及主题文件templates)。
二、配置git
-
下载git
apt-get install git -
配置git
git config --global user.name 'XXX'
git config --global user.email '[email protected]' -
生成公钥
配置完成后,需要创建验证用的公钥,因为git是通过ssh的方式访问资源库的,所以需要在本地创建验证用的文件,安装前可以通过命令检查SSH Keys是否存在:
ls -al ~/.ssh。
①关联自己账号生成公钥,适用于gitlab个人账号配置
ssh-keygen -C '[email protected]' -t rsa
邮箱为刚才输入的地址,生成的公钥在当前文件夹下。
输入公钥保存的名称,输入密码(不填为空),确认密码(不填为空)。
②关联公共账号,适用于公司环境下,大家共用一台git主机管理项目。
ssh-keygen -t rsa
输入公钥保存的名称,输入密码(不填为空),确认密码(不填为空)。
生成的公钥在当前文件夹下。
- 上传公钥
-
跳转到公钥目录
cd ~/.ssh -
打开
pub结尾的文件并复制所有内容cat id_rsa.pub -
登录Github
-
点击头像,选择
Settings -
左旁栏选择
SSH and GPG keys -
点击
New SSH key -
将复制的
SSH Key添加进去 -
输入密码进行验证
-
输入该命令测试是否连接成功:
ssh -T [email protected], 若成功则会出现
- 在Github新建一个仓库用于存放备份文件
[注]若每次提交需要输入密码,则使用git config --global credential.helper store强制解决
三、制作脚本
#! /bin/bash
message=`date -u + "%Y_%m_%d_%H_%M"`
cd /root/.halo
git add application.yaml upload/ db/ templates/
git commit -m $message
git push
1.将其写入到一个sh文件里面。
2.赋予执行权限 chmod +x {NAME}.sh。
3.初始化~/.halo 仓库: cd ~/.halo & git init 。
4.绑定远程仓库 git remote add origin <远程仓库地址.git>。
5.同步一下仓库 git pull origin master。
四、开启脚本自动定时运行
- 键入命令
crontab -e - 根据操作习惯选择编辑的工具(我使用vim)
- 会自动打开一个文件,在文件内添加
00 03 * * * /bin/{NAME}.sh添加的是绝对路径。(00 03 * * *表示每天三点执行)。 - 执行命令
service cron restart使配置的定时任务生效。
查看定时任务
crontab -l
启动服务/sbin/service crond start
关闭服务/sbin/service crond stop
重启服务/sbin/service crond restart
重新载入配置/sbin/service crond reload
【参考链接】
自动备份防止意外数据丢失
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法