|
#!/bin/bash |
|
set -e |
|
|
|
mkdir -p /app/logs 2>/dev/null || true |
|
|
|
log() { |
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a /app/logs/entrypoint.log 2>/dev/null || echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" |
|
} |
|
|
|
log "容器启动中..." |
|
|
|
SYNC_INTERVAL="${SYNC_INTERVAL:-60}" |
|
log "设置同步间隔: ${SYNC_INTERVAL}分钟" |
|
|
|
DB_PATH="${DB_PATH:-/app/db}" |
|
BACKUP_PATH="${BACKUP_PATH:-/app/backup}" |
|
REMOTE_BACKUP_DIR="${REMOTE_BACKUP_DIR:-tgdrive_backup}" |
|
BACKUP_FILENAME="${BACKUP_FILENAME:-tgdrive_db_backup.tar.gz}" |
|
|
|
mkdir -p "$DB_PATH" 2>/dev/null || true |
|
mkdir -p "$BACKUP_PATH" 2>/dev/null || true |
|
chmod -R 777 "$DB_PATH" 2>/dev/null || true |
|
chmod -R 777 "$BACKUP_PATH" 2>/dev/null || true |
|
|
|
log "数据库路径: ${DB_PATH}" |
|
log "备份路径: ${BACKUP_PATH}" |
|
log "远程备份目录: ${REMOTE_BACKUP_DIR}" |
|
log "备份文件名: ${BACKUP_FILENAME}" |
|
|
|
if [ -n "$WEBDAV_URL" ] && [ -n "$WEBDAV_USERNAME" ] && [ -n "$WEBDAV_PASSWORD" ]; then |
|
log "检测到WebDAV配置,尝试初始同步..." |
|
|
|
/app/sync-script.sh restore || log "首次恢复尝试失败,可能是首次运行或WebDAV上没有备份或权限问题" |
|
|
|
log "设置定时同步任务..." |
|
( |
|
while true; do |
|
sleep $((SYNC_INTERVAL * 60)) |
|
/app/sync-script.sh sync >> /app/logs/sync_cron.log 2>&1 || log "同步任务执行失败" >> /app/logs/sync_cron.log 2>&1 |
|
done |
|
) & |
|
|
|
log "后台同步服务已启动,每${SYNC_INTERVAL}分钟执行一次" |
|
else |
|
log "未检测到WebDAV配置,跳过同步设置" |
|
fi |
|
|
|
log "tgDrive 同步版本启动成功" |
|
|
|
trap_handler() { |
|
log "接收到停止信号,执行备份..." |
|
if [ -n "$WEBDAV_URL" ] && [ -n "$WEBDAV_USERNAME" ] && [ -n "$WEBDAV_PASSWORD" ]; then |
|
/app/sync-script.sh backup || log "备份过程中遇到错误,可能是权限问题" |
|
log "备份尝试完成,容器即将停止" |
|
else |
|
log "未配置WebDAV,跳过备份" |
|
fi |
|
exit 0 |
|
} |
|
|
|
trap trap_handler SIGTERM SIGINT |
|
|
|
log "启动tgDrive应用..." |
|
|
|
cd /app |
|
exec java -jar app.jar "$@" |