Ted / monitor_and_upload.sh
22333Misaka's picture
Upload 4 files
e3ec78b verified
#!/bin/bash
# --- 配置区 ---
# Alist 服务器地址 (保持不变)
ALIST_URL="https://o.114514heihei.eu.org/od"
# 本地日志文件路径
LOG_FILE="/app/size_monitor.log"
# 上传到 Alist 的路径和文件名
REMOTE_PATH="/size_monitor.log"
# 监控和上传的间隔时间(秒)
SLEEP_INTERVAL=300 # 5分钟
# --- 脚本主逻辑 ---
echo "--- Starting Filesystem Monitor and Uploader ---" > $LOG_FILE
echo "--- To enable uploads, set the ALIST_TOKEN environment variable. ---" >> $LOG_FILE
while true; do
# --- 1. 记录大小 ---
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "--- Log entry at $TIMESTAMP ---" >> $LOG_FILE
# 监控 /app 目录下所有子目录的大小
du -sh /app/* >> $LOG_FILE
echo "" >> $LOG_FILE
# --- 2. 上传日志 (检查环境变量是否存在) ---
if [ -n "$ALIST_TOKEN" ]; then
echo "Uploading log file to Alist server at $TIMESTAMP..."
# 使用 curl 调用 Alist API 上传文件
# -s: 静默模式
# -o /dev/null: 丢弃标准输出
# -w "%{http_code}": 只输出 HTTP 状态码
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" -X PUT \
--url "$ALIST_URL/api/fs/put" \
-H "Authorization: $ALIST_TOKEN" \
-H "File-Path: $REMOTE_PATH" \
-T "$LOG_FILE")
if [ "$HTTP_STATUS" -eq 200 ]; then
echo "Log file uploaded successfully (HTTP Status: $HTTP_STATUS)."
else
echo "Error: Failed to upload log file (HTTP Status: $HTTP_STATUS)."
fi
else
echo "Warning: ALIST_TOKEN environment variable is not set. Skipping upload."
fi
# --- 3. 等待 ---
sleep $SLEEP_INTERVAL
done