高效博客管理:通过Shell脚本实现Ghost模板的自动替换

高效博客管理:通过Shell脚本实现Ghost模板的自动替换

需求背景

🤔
Ghost每次版本升级后,主题下面所有的hbs模版均会被重置。如果你有自定义的模版,那么每次都会手动再覆盖回去。这对于那些喜欢尝鲜的人来说很不友好。所以自己就写了个shell脚本,将这些繁琐的过程简化了一下。

Shell脚本

以默认主题Casper来说,你需要提前备份好Casper目录下的所有自定义修改后的.hbs模版。并将这些模版放置于你服务器指定的目录。在指定目录创建一个名为update_ghost_templates.sh的文件,添加内容如下:

#!/bin/bash

# 切换到用户
su - <USERNAME>

# 进入网站目录
cd /<WEBSITE_DIRECTORY>

# 定义源和目标目录
SOURCE_DIR="/<BACKUP_DIRECTORY>"
TARGET_DIR="/<THEME_DIRECTORY>"

# 复制并替换模板文件
cp -f $SOURCE_DIR/tag.hbs $TARGET_DIR/
cp -f $SOURCE_DIR/post.hbs $TARGET_DIR/
cp -f $SOURCE_DIR/page.hbs $TARGET_DIR/
cp -f $SOURCE_DIR/index.hbs $TARGET_DIR/
cp -f $SOURCE_DIR/error.hbs $TARGET_DIR/
cp -f $SOURCE_DIR/error-404.hbs $TARGET_DIR/
cp -f $SOURCE_DIR/default.hbs $TARGET_DIR/
cp -f $SOURCE_DIR/custom-posts-archive.hbs $TARGET_DIR/
cp -f $SOURCE_DIR/author.hbs $TARGET_DIR/
cp -f $SOURCE_DIR/favicon.ico $TARGET_DIR/
cp -f $SOURCE_DIR/manifest.json $TARGET_DIR/
cp -f $SOURCE_DIR/sw.js $TARGET_DIR/
cp -f $SOURCE_DIR/site.txt $TARGET_DIR/
cp -f $SOURCE_DIR/sitemap.xml $TARGET_DIR/

# 修改文件权限
sudo chmod 775 $TARGET_DIR/favicon.ico
sudo chmod 775 $TARGET_DIR/manifest.json
sudo chmod 775 $TARGET_DIR/sw.js
sudo chmod 775 $TARGET_DIR/site.txt
sudo chmod 775 $TARGET_DIR/sitemap.xml

# 创建locales目录并设置权限
cd $TARGET_DIR
sudo mkdir -p $TARGET_DIR/locales
sudo chown <USERNAME>:<USERNAME> $TARGET_DIR/locales
sudo chmod 775 $TARGET_DIR/locales

# 复制并设置zh-Hans.json文件权限
cp -f $SOURCE_DIR/zh-Hans.json $TARGET_DIR/locales/
sudo chown <USERNAME>:<USERNAME> $TARGET_DIR/locales/zh-Hans.json

# 复制并替换partials目录下的文件
cp -f $SOURCE_DIR/post-card.hbs $TARGET_DIR/partials/
cp -f $SOURCE_DIR/navigation.hbs $TARGET_DIR/partials/
cp -f $SOURCE_DIR/pagination.hbs $TARGET_DIR/partials/

# 修改partials目录下的文件权限
sudo chmod 775 $TARGET_DIR/partials/navigation.hbs
sudo chmod 775 $TARGET_DIR/partials/pagination.hbs
sudo chmod 775 $TARGET_DIR/partials/post-card.hbs

# 执行ghost backup命令
ghost backup
<USERNAME> :你的ghost用户名,例如ghost_admin。
<WEBSITE_DIRECTORY> :你的网站目录路径,例如/var/www/ghostwebsite。
<BACKUP_DIRECTORY> :你的备份目录路径,例如/home/ghost_admin/backups。
<THEME_DIRECTORY> :你的主题目录路径,例如/var/www/ghostwebsite/content/themes/casper。

给脚本添加可执行权限:

chmod +x update_ghost_templates.sh

运行脚本:

./update_ghost_templates.sh