90 lines
2.4 KiB
Bash
90 lines
2.4 KiB
Bash
#!/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 目录中" |