下载 Anolis 23 所有源码 RPM 包并记录日志

下载 Anolis 23 所有源码 RPM 包并记录日志
功能包括:自动创建目录、下载日志、进度条及成功/失败统计

创建download_srpm.sh脚本文件

vi download_srpm.sh

内容如下:

#!/bin/bash

# 下载 Anolis 23 所有源码 RPM 包并记录日志
# 用法:./download_rpms.sh [目标目录]

# 目标 URL
SOURCE_URL="https://mirrors.openanolis.cn/anolis/23/os/source/Packages/"

# 获取下载目录(默认为当前目录)
TARGET_DIR="${1:-./anolis23_source_rpms}"
LOG_FILE="${TARGET_DIR}/download.log"
mkdir -p "$TARGET_DIR"
touch "$LOG_FILE"  # 确保日志文件存在

# 临时文件存储列表
TMP_FILE="/tmp/rpm_list.txt"

# 初始化统计变量
total=0
success=0
fail=0

# 获取文件列表并过滤 RPM
echo -e "\033[34m[INFO] 正在获取 RPM 列表...\033[0m"
curl -s "$SOURCE_URL" | grep -oE 'href="[^"]+\.src\.rpm"' | sed 's/href="//;s/"$//' > "$TMP_FILE"

# 统计总数
total=$(wc -l < "$TMP_FILE")
count=0

# 进度条函数
progress_bar() {
    local progress=$(( $1 * 50 / $total ))
    printf "\r[%-50s] %d/%d" "$(printf '#%.0s' $(seq 1 $progress))" "$1" "$total"
}

# 记录开始时间
echo "=== 下载开始时间: $(date '+%Y-%m-%d %H:%M:%S') ===" >> "$LOG_FILE"

# 开始下载
echo -e "\033[34m[INFO] 开始下载到目录: $TARGET_DIR (共 $total 个文件)\033[0m"
while read -r rpm; do
    ((count++))
    progress_bar $count
    
    # 下载并记录结果
    if wget -q -nc -P "$TARGET_DIR" "${SOURCE_URL}${rpm}"; then
        echo "$(date '+%Y-%m-%d %H:%M:%S') [SUCCESS] ${rpm}" >> "$LOG_FILE"
        ((success++))
    else
        echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR]   ${rpm}" >> "$LOG_FILE"
        ((fail++))
    fi
done < "$TMP_FILE"

# 记录结束时间
echo -e "\n=== 下载结束时间: $(date '+%Y-%m-%d %H:%M:%S') ===" >> "$LOG_FILE"

# 最终统计
echo -e "\n\033[32m[SUCCESS] 下载完成!"
echo -e "成功: \033[33m${success}\033[32m"
echo -e "失败: \033[33m${fail}\033[32m"
echo -e "日志文件: \033[34m$(realpath "$LOG_FILE")\033[0m"

# 清理临时文件
rm -f "$TMP_FILE"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑蛋同志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值