Ubuntu 定时下载文件的实用方法
一、方法总览与选择
二、方法一 Cron + wget 或 curl(推荐)
#!/usr/bin/env bash
set -Eeuo pipefail
url="https://example.com/data.csv"
out="/data/$(date +%F_%H-%M-%S).csv"
wget -q --show-progress --timeout=30 --tries=3 \
-O "$out" "$url" && \
echo "$(date) success: $out" >> /var/log/dl.log || \
echo "$(date) fail: $url" >> /var/log/dl.err
三、方法二 systemd Timer(替代方案)
[Unit]
Description=定时下载服务
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/wget -O /data/latest.zip https://example.com/file.zip
User=ubuntu
Group=ubuntu
[Unit]
Description=每小时执行一次下载
Requires=dl.service
[Timer]
OnBootSec=1min
OnUnitActiveSec=1h
Unit=dl.service
[Install]
WantedBy=timers.target
四、方法三 FTP 批量按日期下载(传统环境)
#!/usr/bin/env bash
set -Eeuo pipefail
ftp -n <<EOF
open 10.19.15.23
user your_ftp_user your_ftp_pass
binary
cd /hour
lcd /data/hour
hash
prompt off
mget *$(date -d yesterday +%Y%m%d)*
cd ../day
mget *$(date -d yesterday +%Y%m%d)*
close
bye
EOF
echo "$(date) ftp done" >> /var/log/ftp_dl.log
五、排错与最佳实践