Update install_reader.sh
Browse files- install_reader.sh +38 -1
install_reader.sh
CHANGED
|
@@ -2,6 +2,12 @@
|
|
| 2 |
|
| 3 |
set -euo pipefail
|
| 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
# 获取最新版本的重定向URL
|
| 6 |
echo "正在获取最新版本信息..."
|
| 7 |
redirect_url=$(curl -Ls -o /dev/null -w '%{url_effective}' 'https://github.com/hectorqin/reader/releases/latest')
|
|
@@ -30,7 +36,7 @@ zip_file="reader-server-${version}.zip"
|
|
| 30 |
echo "正在解压文件..."
|
| 31 |
unzip "$zip_file"
|
| 32 |
|
| 33 |
-
|
| 34 |
find . -type f -exec chmod +x {} +
|
| 35 |
|
| 36 |
# 处理解压目录结构
|
|
@@ -40,6 +46,37 @@ if [ -n "$dir_name" ]; then
|
|
| 40 |
cd "$dir_name"
|
| 41 |
fi
|
| 42 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
# 执行启动脚本
|
| 44 |
if [ -f "./startup.sh" ]; then
|
| 45 |
echo "正在启动服务..."
|
|
|
|
| 2 |
|
| 3 |
set -euo pipefail
|
| 4 |
|
| 5 |
+
# 检查WebDAV环境变量
|
| 6 |
+
if [[ -z "${WEBDAV_URL}" || -z "${WEBDAV_USER}" || -z "${WEBDAV_PASS}" ]]; then
|
| 7 |
+
echo "错误:必须设置WEBDAV_URL、WEBDAV_USER、WEBDAV_PASS环境变量"
|
| 8 |
+
exit 1
|
| 9 |
+
fi
|
| 10 |
+
|
| 11 |
# 获取最新版本的重定向URL
|
| 12 |
echo "正在获取最新版本信息..."
|
| 13 |
redirect_url=$(curl -Ls -o /dev/null -w '%{url_effective}' 'https://github.com/hectorqin/reader/releases/latest')
|
|
|
|
| 36 |
echo "正在解压文件..."
|
| 37 |
unzip "$zip_file"
|
| 38 |
|
| 39 |
+
# +x权限
|
| 40 |
find . -type f -exec chmod +x {} +
|
| 41 |
|
| 42 |
# 处理解压目录结构
|
|
|
|
| 46 |
cd "$dir_name"
|
| 47 |
fi
|
| 48 |
|
| 49 |
+
# 数据恢复逻辑
|
| 50 |
+
DATA_DIR="../storage"
|
| 51 |
+
if [ ! -d "${DATA_DIR}" ] || [ -z "$(ls -A ${DATA_DIR})" ]; then
|
| 52 |
+
echo "数据目录不存在或为空,尝试从WebDAV恢复备份..."
|
| 53 |
+
if curl -u "${WEBDAV_USER}:${WEBDAV_PASS}" "${WEBDAV_URL}/latest-backup.tar.gz" -o /tmp/latest-backup.tar.gz; then
|
| 54 |
+
echo "下载备份成功,正在解压..."
|
| 55 |
+
mkdir -p "${DATA_DIR}"
|
| 56 |
+
tar -xzf /tmp/latest-backup.tar.gz -C "${DATA_DIR}" 2>/dev/null || true
|
| 57 |
+
echo "数据恢复完成"
|
| 58 |
+
else
|
| 59 |
+
echo "警告:无法下载备份文件,将使用空数据目录启动"
|
| 60 |
+
fi
|
| 61 |
+
else
|
| 62 |
+
echo "数据目录已存在,跳过恢复"
|
| 63 |
+
fi
|
| 64 |
+
|
| 65 |
+
# 启动定时备份任务
|
| 66 |
+
echo "启动定时备份任务,每半小时备份一次到WebDAV..."
|
| 67 |
+
(
|
| 68 |
+
while true; do
|
| 69 |
+
sleep 1800
|
| 70 |
+
echo "$(date '+%Y-%m-%d %T'): 开始备份数据..."
|
| 71 |
+
BACKUP_FILE="/tmp/backup-$(date +%Y%m%d%H%M%S).tar.gz"
|
| 72 |
+
tar -czf "${BACKUP_FILE}" -C "${DATA_DIR}" . >/dev/null 2>&1
|
| 73 |
+
curl -u "${WEBDAV_USER}:${WEBDAV_PASS}" -T "${BACKUP_FILE}" "${WEBDAV_URL}/backup/$(basename "${BACKUP_FILE}")" --silent
|
| 74 |
+
curl -u "${WEBDAV_USER}:${WEBDAV_PASS}" -T "${BACKUP_FILE}" "${WEBDAV_URL}/latest-backup.tar.gz" --silent
|
| 75 |
+
rm -f "${BACKUP_FILE}"
|
| 76 |
+
echo "$(date '+%Y-%m-%d %T'): 备份完成"
|
| 77 |
+
done
|
| 78 |
+
) &
|
| 79 |
+
|
| 80 |
# 执行启动脚本
|
| 81 |
if [ -f "./startup.sh" ]; then
|
| 82 |
echo "正在启动服务..."
|