前情提要
由于非常猪鼻的我之前一直是 vscode
写博客加winSCP
手动传输数据到服务器,博客推送和撰写效率十分低下,文章少还好说,现在一套流程走下来麻烦的我想扇自己一巴掌,所以搞了一套更好更方便的自动化流程来爱护我的hugo博客和身心健康,并且学习了一下obsidian的文章笔记撰写使用,下面给大家介绍一下方法
搭配脚本实现git自动化推送
服务器端
ssh密钥配置
Windows端
通常保存在C:\Users\用户名\.ssh
中,没有的话自行创建
ssh-keygen -t rsa -b 4096
并提取出id_rsa.pub
文件中的公钥
然后我们到服务器端
然后测试一下
ssh -T 用户名@xxx.xxx.xxx.xxx
,如果出现Welcome to GitLab, 用户名!
或其他类似的成功信息,则说明连接成功
Linux端
操作类似,
先查看是否存在公钥ls ~/.ssh/
,没有的话使用ssh-keygen -t rsa -b 4096
生成公钥,其余于上述类似
创建和配置git用户
创建git用户
sudo useradd -m git
配置git用户
vim /etc/passwd
在其中找到git用户,修改/bin/bash为/usr/bin/git-shell(即你git-shell的位置)
sudo passwd git
设置git用户密码,如有需要
创建git仓库
1
2
mkdir /home/repo
cd /home/repo
1
2
# nan0in27_site.git为仓库名称,尽量按你博客来修改比较好
git init --bare nan0in27_site.git
1
2
cd nan0in27_site.git/hooks
vim post-update
我输入的内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
# 设置源仓库和目标目录
REPO_DIR = "/home/repo/nan0in27_site.git"
PUBLIC_DIR = "/home/public"
# 记录日志
echo "Post-update hook triggered at $( date) " >> /home/repo/post-update.log
# 拉取最新的远程内容
git -C $REPO_DIR fetch
# 将 Git 仓库中的内容拉取到目标目录
GIT_WORK_TREE = $PUBLIC_DIR git checkout -f
# 记录日志
echo "Files copied to $PUBLIC_DIR " >> /home/repo/post-update.log
权限和文件修改
1
2
3
chmod +x post-update
sudo chmod 644 /home/repo/post-update.log
sudo chmod -R 755 /home/public # 这个根据你的实际情况修改,这个是我的博客根目录
1
2
chown -R git:git nan0in27_site.git
chown -R git:git /home/public
用户端
类似github的操作,在我们想要放仓库的地方打开git bash,然后输入
1
git clone git@服务器IP地址:/home/repo/nan0in27_site.git
脚本实现推送自动化
我在根目录下创建了一个deploy.sh
文件,内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash
# 设置博客生成目录和目标仓库路径
HUGO_PUBLIC_DIR = "/d/blog/nan0in_blog/nan0in27/public"
REPO_DIR = "/d/blog/nan0in_blog/nan0in27/nan0in27_site"
# 生成 Hugo 静态文件
cd /d/blog/nan0in_blog/nan0in27 # 确保你在 Hugo 项目目录
hugo
# 复制 public 目录中的文件到 nan0in27_site 仓库
echo "Copying files from Hugo public directory to nan0in27_site..."
cp -r $HUGO_PUBLIC_DIR /* $REPO_DIR /
# 进入 nan0in27_site 仓库
cd $REPO_DIR
# 确保你在正确的 Git 仓库目录下
if [ -d ".git" ] ; then
# 添加所有更改的文件到 Git
git add .
# 提交更改
git commit -m "Update site content"
# 推送到远程仓库
git push origin master
else
echo "Error: Not a Git repository. Please check your repository configuration."
exit 1
fi
然后我们就可以愉快的在git bash里使用./deploy.sh
实现博客推送自动化了
在arch linux则做略微修改即可,先添加个权限git config --global --add safe.directory you_position/nan0in27_site
见 archlinux_deploy.sh
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/zsh
#设置目录 目标仓库
HUGO_PUBLIC_DIR = "/mnt/formal/blog/nan0in_blog/nan0in27/public"
REPO_DIR = "/mnt/formal/blog/nan0in_blog/nan0in27/nan0in27_site"
cd /mnt/formal/blog/nan0in_blog/nan0in27/
hugo
# 复制 public 目录中的文件到nan0in27_site
# echo "successfully copy the files from Hugo public directory to nan0in27_site🐕"
cp -r $HUGO_PUBLIC_DIR /* $REPO_DIR /
cd $REPO_DIR
if [ -d ".git" ] ; then
git add .
git commit -m "Update blog content"
git push origin master
else
echo "Error:maybe it's not a Git repository...Check your repository"
exit 1
fi
Obsidian便利自动化博客撰写
暂时懒得写,之后会传
使用了以上插件
在启用了dataview的情况下在主界面创建速查表格:
1
2
3
4
5
6
7
8
9
Table without id
title as 文章标题,
categories as 分类,
tags as 标签,
date as 创作时间,
file.link as 链接
from "content/post"
where file.name != this.file.name
sort file.mtime desc
关于模板
我在博客根目录下创建一个@Extras文件夹,并把模板文件夹放入其中来进行模板调用,在设置添加Insert template的快捷键后指定好文件夹
如折叠块模板,在模板文件夹下创建shortcodes.md
内容
1
2
3
{\{< details >}}
$CURSOR$
{\{< /details >}}
之后只要在想要折叠的部分调用出来即可
short codes
NOTICE
即Githubc markdown形式的shortcodes
原方法来自koala-一些短代码
notice部分
我们在obsidian下创建@Extras
,然后存放我们的模板shortcodes
之后就可以通过ctrl+D调出模板进行使用了
chat
原方法来自koala-一些短代码
chat部分
创建chat模板
内容如上(记得去掉转义符号)
John Doe 2023-09-12 14:30
这是左边的消息内容。
2023-09-12 14:45 Alice
这是右边的消息内容,测试长长长长长长长长长长长长长长长长长长长长长长长长度。