40 lines
1.0 KiB
Bash
40 lines
1.0 KiB
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
if [ "${EUID}" -ne 0 ]; then echo "需要 root 权限"; exit 1; fi
|
|
|
|
SRC_DIR=$(cd "$(dirname "$0")" && pwd)
|
|
DEST_DIR=/srv/taiko-web
|
|
SONGS_DIR="$DEST_DIR/public/songs"
|
|
BACKUP_DIR="$DEST_DIR/.backup_songs_$(date +%Y%m%d_%H%M%S)"
|
|
|
|
systemctl stop taiko-web || true
|
|
|
|
if [ -d "$SONGS_DIR" ]; then
|
|
mkdir -p "$BACKUP_DIR"
|
|
rsync -a "$SONGS_DIR/" "$BACKUP_DIR/" || cp -a "$SONGS_DIR/." "$BACKUP_DIR/"
|
|
fi
|
|
|
|
mkdir -p "$DEST_DIR"
|
|
rsync -a --delete \
|
|
--exclude '.git' \
|
|
--exclude '.venv' \
|
|
--exclude 'public/songs' \
|
|
"$SRC_DIR/" "$DEST_DIR/"
|
|
|
|
if [ -x "$DEST_DIR/.venv/bin/pip" ]; then
|
|
"$DEST_DIR/.venv/bin/pip" install -U pip
|
|
"$DEST_DIR/.venv/bin/pip" install -r "$DEST_DIR/requirements.txt"
|
|
fi
|
|
|
|
chown -R www-data:www-data "$DEST_DIR"
|
|
|
|
if [ -d "$BACKUP_DIR" ]; then
|
|
mkdir -p "$SONGS_DIR"
|
|
rsync -a "$BACKUP_DIR/" "$SONGS_DIR/" || cp -a "$BACKUP_DIR/." "$SONGS_DIR/"
|
|
fi
|
|
|
|
systemctl daemon-reload || true
|
|
systemctl restart taiko-web || systemctl start taiko-web || true
|
|
|
|
systemctl is-active --quiet taiko-web |