test / scripts /save-env.sh
GGSheng's picture
feat: deploy Gemma 4 to hf space
08c964e verified
#!/usr/bin/env bash
# 保存当前环境变量到 /etc/profile.d/openclaw-env.sh
# 供所有新的 bash 会话使用
ENV_FILE="/etc/profile.d/openclaw-env.sh"
mkdir -p /etc/profile.d
# 安全地写入环境变量,处理特殊字符
write_env_var() {
local key="$1"
local value="$2"
# 使用 printf %q 对值进行转义,确保安全
printf "export %s=%q\n" "$key" "$value"
}
{
echo "# OpenClaw 环境变量 - 自动生成的,供所有新的 bash 会话使用"
echo "# 生成时间: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
echo ""
echo "# 基础配置"
write_env_var "OPENCLAW_HOME" "${OPENCLAW_HOME:-/root}"
write_env_var "OPENCLAW_STATE_DIR" "${OPENCLAW_STATE_DIR:-/root/.openclaw}"
write_env_var "OPENCLAW_WORKSPACE_DIR" "${OPENCLAW_WORKSPACE_DIR:-/root/.openclaw/workspace}"
write_env_var "OPENCLAW_CONFIG_PATH" "${OPENCLAW_CONFIG_PATH:-/root/.openclaw/openclaw.json}"
echo ""
echo "# 备份核心配置"
write_env_var "OPENCLAW_BACKUP_DATASET_REPO" "${OPENCLAW_BACKUP_DATASET_REPO:-}"
write_env_var "OPENCLAW_RESTORE_DATASET_REPO" "${OPENCLAW_RESTORE_DATASET_REPO:-}"
write_env_var "OPENCLAW_BACKUP_REPO_TYPE" "${OPENCLAW_BACKUP_REPO_TYPE:-dataset}"
write_env_var "OPENCLAW_BACKUP_PATH_PREFIX" "${OPENCLAW_BACKUP_PATH_PREFIX:-backups}"
write_env_var "HF_TOKEN" "${HF_TOKEN:-}"
write_env_var "OPENCLAW_HF_SPACE_ID" "${OPENCLAW_HF_SPACE_ID:-}"
write_env_var "OPENCLAW_BACKUP_ENABLED" "${OPENCLAW_BACKUP_ENABLED:-false}"
write_env_var "OPENCLAW_BACKUP_NPM_ENABLED" "${OPENCLAW_BACKUP_NPM_ENABLED:-true}"
write_env_var "OPENCLAW_RESTORE_NPM_ENABLED" "${OPENCLAW_RESTORE_NPM_ENABLED:-true}"
write_env_var "OPENCLAW_BACKUP_CRON" "${OPENCLAW_BACKUP_CRON:-*/12 * * * *}"
write_env_var "OPENCLAW_BACKUP_SOURCE_DIR" "${OPENCLAW_BACKUP_SOURCE_DIR:-/root/.openclaw}"
write_env_var "OPENCLAW_BACKUP_WORK_DIR" "${OPENCLAW_BACKUP_WORK_DIR:-/tmp/openclaw-backup}"
echo ""
echo "# 备份加密配置"
write_env_var "OPENCLAW_BACKUP_ENCRYPTION_ENABLED" "${OPENCLAW_BACKUP_ENCRYPTION_ENABLED:-false}"
write_env_var "OPENCLAW_BACKUP_ENCRYPTION_PASSWORD" "${OPENCLAW_BACKUP_ENCRYPTION_PASSWORD:-}"
echo ""
echo "# 备份目录配置"
write_env_var "OPENCLAW_BACKUP_ROOT_CONFIG_DIR" "${OPENCLAW_BACKUP_ROOT_CONFIG_DIR:-/root/.config}"
write_env_var "OPENCLAW_BACKUP_ROOT_CODEX_DIR" "${OPENCLAW_BACKUP_ROOT_CODEX_DIR:-/root/.codex}"
write_env_var "OPENCLAW_BACKUP_ROOT_CLAUDE_DIR" "${OPENCLAW_BACKUP_ROOT_CLAUDE_DIR:-/root/.claude}"
write_env_var "OPENCLAW_BACKUP_ROOT_AGENTS_DIR" "${OPENCLAW_BACKUP_ROOT_AGENTS_DIR:-/root/.agents}"
write_env_var "OPENCLAW_BACKUP_ROOT_SSH_DIR" "${OPENCLAW_BACKUP_ROOT_SSH_DIR:-/root/.ssh}"
write_env_var "OPENCLAW_BACKUP_ROOT_ENV_DIR" "${OPENCLAW_BACKUP_ROOT_ENV_DIR:-/root/.env.d}"
write_env_var "OPENCLAW_BACKUP_ROOT_NPM_DIR" "${OPENCLAW_BACKUP_ROOT_NPM_DIR:-/root/.npm}"
write_env_var "OPENCLAW_BACKUP_ROOT_LARK_CLI_DIR" "${OPENCLAW_BACKUP_ROOT_LARK_CLI_DIR:-/root/.lark-cli}"
echo ""
echo "# 增量备份配置"
write_env_var "OPENCLAW_INCREMENTAL_BACKUP" "${OPENCLAW_INCREMENTAL_BACKUP:-true}"
write_env_var "OPENCLAW_INCREMENTAL_INTERVAL_MINUTES" "${OPENCLAW_INCREMENTAL_INTERVAL_MINUTES:-10}"
echo ""
echo "# 动态备份策略"
write_env_var "OPENCLAW_DYNAMIC_BACKUP" "${OPENCLAW_DYNAMIC_BACKUP:-true}"
write_env_var "OPENCLAW_DYNAMIC_SMALL_THRESHOLD_MB" "${OPENCLAW_DYNAMIC_SMALL_THRESHOLD_MB:-500}"
write_env_var "OPENCLAW_DYNAMIC_MEDIUM_THRESHOLD_MB" "${OPENCLAW_DYNAMIC_MEDIUM_THRESHOLD_MB:-2000}"
write_env_var "OPENCLAW_DYNAMIC_HIGH_CHANGE_RATE" "${OPENCLAW_DYNAMIC_HIGH_CHANGE_RATE:-10}"
write_env_var "OPENCLAW_DYNAMIC_LOW_CHANGE_RATE" "${OPENCLAW_DYNAMIC_LOW_CHANGE_RATE:-2}"
write_env_var "OPENCLAW_DYNAMIC_MIN_CHANGED_FILES" "${OPENCLAW_DYNAMIC_MIN_CHANGED_FILES:-5}"
write_env_var "OPENCLAW_DYNAMIC_MIN_CHANGED_SIZE_KB" "${OPENCLAW_DYNAMIC_MIN_CHANGED_SIZE_KB:-100}"
echo ""
echo "# 全备份策略"
write_env_var "OPENCLAW_FULL_BACKUP_INTERVAL_HOURS" "${OPENCLAW_FULL_BACKUP_INTERVAL_HOURS:-1}"
write_env_var "OPENCLAW_MAX_INCREMENTAL_BACKUPS" "${OPENCLAW_MAX_INCREMENTAL_BACKUPS:-10}"
echo ""
echo "# 备份保留和压缩"
write_env_var "OPENCLAW_BACKUP_KEEP_COUNT" "${OPENCLAW_BACKUP_KEEP_COUNT:-48}"
write_env_var "OPENCLAW_BACKUP_COMPRESSION_LEVEL" "${OPENCLAW_BACKUP_COMPRESSION_LEVEL:-6}"
write_env_var "OPENCLAW_BACKUP_SPLIT_SIZE" "${OPENCLAW_BACKUP_SPLIT_SIZE:-500M}"
write_env_var "OPENCLAW_BACKUP_SIZE_WARNING_MB" "${OPENCLAW_BACKUP_SIZE_WARNING_MB:-1500}"
write_env_var "OPENCLAW_BACKUP_PRIVATE" "${OPENCLAW_BACKUP_PRIVATE:-true}"
echo ""
echo "# 健康检查配置"
write_env_var "OPENCLAW_BACKUP_HEALTH_CHECK_ENABLED" "${OPENCLAW_BACKUP_HEALTH_CHECK_ENABLED:-false}"
write_env_var "OPENCLAW_BACKUP_HEALTH_CHECK_BEFORE" "${OPENCLAW_BACKUP_HEALTH_CHECK_BEFORE:-false}"
write_env_var "OPENCLAW_BACKUP_HEALTH_CHECK_AFTER" "${OPENCLAW_BACKUP_HEALTH_CHECK_AFTER:-false}"
write_env_var "OPENCLAW_BACKUP_MAX_RETRIES" "${OPENCLAW_BACKUP_MAX_RETRIES:-3}"
echo ""
echo "# 看门狗配置"
write_env_var "WATCHDOG_INTERVAL" "${WATCHDOG_INTERVAL:-300}"
write_env_var "MAX_BACKUP_AGE_MINUTES" "${MAX_BACKUP_AGE_MINUTES:-30}"
write_env_var "FORCE_BACKUP_INTERVAL" "${FORCE_BACKUP_INTERVAL:-3600}"
echo ""
echo "# 恢复超时"
write_env_var "OPENCLAW_RESTORE_TIMEOUT" "${OPENCLAW_RESTORE_TIMEOUT:-5400}"
echo ""
echo "# 额外目录和文件"
write_env_var "OPENCLAW_BACKUP_EXTRA_DIRS" "${OPENCLAW_BACKUP_EXTRA_DIRS:-}"
write_env_var "OPENCLAW_BACKUP_EXTRA_FILES" "${OPENCLAW_BACKUP_EXTRA_FILES:-}"
} > "$ENV_FILE"
chmod 644 "$ENV_FILE"
echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] Environment saved to $ENV_FILE"