You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用wget脚本仅下载10天前上传的NASA TROPOMI数据?

搞定你的NASA TROPOMI数据下载脚本!

咱们先聊聊你的脚本为啥会把2020年所有数据都下下来——核心是两个小错误搞砸了逻辑:

问题出在哪?

  1. 函数调用写错了:你在wget的URL里写的$DATE的内容完全不对,正确的函数调用应该用$(DATE)或者反引号`DATE`,不然wget会把URL当成https://.../2020/,直接递归下载整个2020年的目录!
  2. 日期逻辑不完整:你只取了儒略日(一年中的第几天),但没考虑年份——万一10天前已经跨年了呢?而且这个逻辑其实是在找10天前日期对应的目录,不是“10天前上传”的文件(不过如果NASA的目录是按文件生成日期存的,这俩可能一致)。

修正后的脚本(精准下载10天前日期对应的目录文件)

如果你的需求是下载10天前的日期对应的NASA目录下的.nc文件(毕竟TROPOMI的目录结构是年份/儒略日),用这个脚本就行:

#!/bin/bash

# 定义函数:获取10天前的年份+儒略日,格式比如2024/123
get_target_dir() {
  date -d 'now - 10 days' +"%Y/%j"
}

# 拼接完整的目标URL
BASE_URL="https://tropomi.gesdisc.eosdis.nasa.gov/data/S5P_TROPOMI_Level2/S5P_L2__NO2____HiR.1/"
TARGET_DIR=$(get_target_dir)
FULL_URL="${BASE_URL}${TARGET_DIR}"

# 执行下载,参数保持你的配置
wget -o downloadNew.log \
     --user=xxxx --password=yyyy \
     -r -c -nH -nd -np -N -A '*.nc' \
     --content-disposition \
     "${FULL_URL}"

关键修正点

  • 正确调用函数:用$(get_target_dir)执行函数并拿到返回值,确保URL精准指向10天前的目录,不会瞎逛整个年份目录。
  • 完整路径拼接:同时获取年份和儒略日,哪怕10天前是去年,也能定位到正确的文件夹。
  • 限制下载范围:-np参数确保wget不会往上爬父目录,只下载目标目录里的.nc文件。

如果真要“只下载10天前上传的文件”

如果你的需求是不管文件在哪个目录,只挑服务器上10天前上传的.nc,那得换个思路——wget本身没法直接筛选上传时间,得先拿到目录里的文件列表,再对比时间:

#!/bin/bash

# 计算10天前的Unix时间戳
TEN_DAYS_AGO=$(date -d 'now - 10 days' +%s)

BASE_URL="https://tropomi.gesdisc.eosdis.nasa.gov/data/S5P_TROPOMI_Level2/S5P_L2__NO2____HiR.1/"

# 先爬取所有.nc文件的URL,再筛选最后修改时间符合条件的
wget -q --user=xxxx --password=yyyy -r -l inf --spider -nd -np -A '*.nc' "${BASE_URL}" 2>&1 | grep '^--' | awk '{print $3}' | while read FILE_URL; do
  # 获取文件的最后修改时间戳
  FILE_TIMESTAMP=$(wget --user=xxxx --password=yyyy --spider --server-response "${FILE_URL}" 2>&1 | grep 'Last-Modified' | awk '{print $4,$5,$3,$7}' | xargs -I {} date -d {} +%s)
  # 对比时间,只下载10天前的
  if [ "$FILE_TIMESTAMP" -ge "$TEN_DAYS_AGO" ]; then
    wget -o downloadNew.log -c --user=xxxx --password=yyyy --content-disposition "${FILE_URL}"
  fi
done

注意:这个方法会慢一点,因为要逐个检查文件的修改时间,而且得确保NASA服务器返回Last-Modified头信息。

先验证再执行!

运行脚本前,先echo一下${FULL_URL}(第一个脚本里的变量),确认URL是正确的10天前目录,避免又下错一堆数据~

内容的提问来源于stack exchange,提问作者Muhammad Irsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:57:36