前端打包上传服务器脚本
2022年5月23日
实现功能:
- 打包
- 压缩
- 上传到指定服务器目录
- 解压且替换
- 删除本地打包压缩文件
sh脚本
#!/bin/bash
# 定义变量
SRC_DIR="./src/.vuepress/dist" # 打包后生成的dist目录
REMOTE_USER="root"
REMOTE_HOST="x.x.x.x"
REMOTE_DIR="/root/www" # 远程项目目录
REMOTE_ITEM="blog" # 远程项目名
ARCHIVE_NAME="dist.tar.gz"
# 打包
echo "打包..."
# source ~/.profile
pnpm docs:build #打包命令
# 压缩
echo "压缩 dist 目录..."
tar -czf $ARCHIVE_NAME -C $(dirname $SRC_DIR) $(basename $SRC_DIR)
# 检查压缩是否成功
if [ $? -eq 0 ]; then
echo "压缩成功: $ARCHIVE_NAME"
else
echo "压缩失败"
exit 1
fi
# 使用 scp 传输压缩文件到远程服务器
echo "传输 $ARCHIVE_NAME 到 $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR..."
scp $ARCHIVE_NAME $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR
# 检查传输是否成功
if [ $? -eq 0 ]; then
echo "传输成功"
else
echo "传输失败"
exit 1
fi
# 在远程服务器上解压文件
echo "在远程服务器上解压 $ARCHIVE_NAME..."
ssh -t $REMOTE_USER@$REMOTE_HOST "
tar -xzf $REMOTE_DIR/$ARCHIVE_NAME -C $REMOTE_DIR && \
rsync -a --remove-source-files $REMOTE_DIR/dist/ $REMOTE_DIR/$REMOTE_ITEM/ && \
rm -rf $REMOTE_DIR/dist $REMOTE_DIR/$ARCHIVE_NAME
"
# 检查解压是否成功
if [ $? -eq 0 ]; then
echo "解压成功"
else
echo "解压失败"
exit 1
fi
# 删除本地的压缩文件
echo "删除本地的 $ARCHIVE_NAME..."
rm $ARCHIVE_NAME
rm -rf $SRC_DIR
echo "任务完成"