写了一个简单的升级脚本
先创建一个目录,把升级脚本放在这里。脚本执行完之后,临时文件和之前版本的 writefreely 文件备份也都会在这个目录里。
第一次使用时,先把下面的脚本放到目录中,假设文件名叫做 upgrade.sh
。然后执行 ./upgrade.sh <version> <dst_dir>
进行升级。
#!/bin/bash
set -o errexit
SERVICE_NAME="writefreely"
WORKING_DIR="$(cd "$(dirname "$0")"; pwd -P)"
TEMP_DIR="$WORKING_DIR/writefreely_temp"
BAK_DIR="$WORKING_DIR/.bak"
clean() {
echo "clean"
rm -fr $TEMP_DIR/*
}
usage() {
echo "Usage: $(basename -- "$0") <version> <dst_dir>"
}
bak() {
local dst=$1
echo "back up $dst"
tar czvf $BAK_DIR/writefreely_bak_$(date +%s).tar.gz $dst
}
download() {
echo "downloading..."
local version=$1
rm -f $WORKING_DIR/writefreely_${version}_linux_amd64.tar.gz
rm -f $WORKING_DIR/writefreely_${version}_linux_amd64.tar.gz*
wget "https://github.com/writeas/writefreely/releases/download/v${version}/writefreely_${version}_linux_amd64.tar.gz" -O "${WORKING_DIR}/writefreely_${version}_linux_amd64.tar.gz"
}
extract() {
echo "extracting..."
local version=$1
tar xzvf writefreely_${version}_linux_amd64.tar.gz -C "$TEMP_DIR"
}
stop() {
echo "stop service"
sudo service $SERVICE_NAME stop
}
start() {
echo "start service"
sudo service $SERVICE_NAME start
}
upgrade() {
local dst=$1
echo "upgrading..."
cp -r $TEMP_DIR/* $dst
}
main() {
if [[ ! $# -eq 2 ]]; then
usage
exit -1
fi
mkdir -p "$BAK_DIR"
mkdir -p "$TEMP_DIR"
clean
bak $2
download $1
extract $1
stop
upgrade $2
start
}
main $@