前情提要
 
由于非常猪鼻的我之前一直是 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
        
             
这是右边的消息内容,测试长长长长长长长长长长长长长长长长长长长长长长长长度。