添加 ollama-mirror.sh

This commit is contained in:
kanshan 2025-03-27 15:55:51 +08:00
parent 8a4607ffc8
commit 1dd525385f

90
ollama-mirror.sh Normal file
View File

@ -0,0 +1,90 @@
#!/bin/bash
# Ollama 精简镜像下载脚本
# 默认只下载 amd64 架构文件,跳过已存在的文件
# 用法:
# ./ollama-mirror.sh # 下载最新版本amd64文件
# ./ollama-mirror.sh v0.6.2 # 下载指定版本amd64文件
# ./ollama-mirror.sh --all # 下载所有版本amd64文件
MIRROR_DIR="ollama_releases"
BASE_URL="https://github.com/ollama/ollama/releases"
# 创建镜像目录
mkdir -p "$MIRROR_DIR"
# 获取最新版本号
get_latest_version() {
echo "获取最新 Ollama 版本..."
latest_version=$(curl -s "https://api.github.com/repos/ollama/ollama/releases/latest" | grep -oP '"tag_name": "\K[^"]+')
echo "最新版本: $latest_version"
echo "$latest_version"
}
# 下载指定版本的文件(如果不存在)
download_file() {
local version=$1
local file=$2
local url="$BASE_URL/download/$version/$file"
local save_path="$MIRROR_DIR/$version/$file"
# 如果文件已存在则跳过
if [ -f "$save_path" ]; then
echo "文件已存在,跳过: $save_path"
return
fi
# 创建版本目录
mkdir -p "$(dirname "$save_path")"
echo "下载: $url => $save_path"
if ! wget -q -O "$save_path" "$url"; then
echo "下载失败: $file"
# 删除可能下载不完整的文件
rm -f "$save_path"
fi
}
# 下载指定版本的amd64文件
download_amd64_release() {
local version=$1
echo "正在下载版本 $version (amd64)..."
# 只下载amd64架构文件
local files=(
"ollama-linux-amd64.tgz"
"ollama-darwin-amd64.tgz"
"ollama-windows-amd64.zip"
"checksums.txt" # 保留校验文件
)
for file in "${files[@]}"; do
download_file "$version" "$file"
done
}
# 获取所有版本
fetch_all_versions() {
echo "获取所有 Ollama 版本..."
curl -s "https://api.github.com/repos/ollama/ollama/releases" | \
grep -oP '"tag_name": "\K[^"]+' | \
while read -r version; do
download_amd64_release "$version"
done
}
# 主逻辑
if [ "$1" == "--all" ]; then
# 下载所有版本的amd64文件
fetch_all_versions
elif [ $# -eq 1 ]; then
# 下载指定版本的amd64文件
download_amd64_release "$1"
else
# 下载最新版本的amd64文件
version=$(get_latest_version)
download_amd64_release "$version"
fi
echo "操作完成!文件保存在 $MIRROR_DIR 目录中"