6

我有一个脚本可以读取一些 url 并将它们带到 axel 以下载它们。我有时想停止脚本并进一步恢复它。Axel 可以恢复文件下载。因此,如果我在下载时按 Ctrl+C,下一次将从文件的简历开始。

但 axel 不检查文件是否存在。所以它将“.0”附加到文件名的末尾并开始下载它两次。如果存在同名文件,我如何告诉 axel,跳过它而不下载它?

4

2 回答 2

11

如果您想确保 axel 将恢复,就像它按文件名而不是按 url 一样,您应该为文件使用确定性名称:

axel -o NAME_OF_EXISTING_FILE

如果要检查文件是否存在

if [ -f $FILE ]; then
   echo "File $FILE exists."
    # operation related to when file exists, aka skip download
else
   echo "File $FILE does not exist." 
   # operation related to when file does not exists
fi


在 axel 的情况下,如果1. 您在本地没有该文件,或者
2. 您有部分下载,则您想开始下载,所以:

function custom_axel() {
    local file_thingy="$1"
    local url="$2"
    if [ ! -e "$file_thingy" ]; then
        echo "file not found, downloading: $file_thingy"
        axel -avn8 "$url" -o "$file_thingy"
    elif [ -e "${file_thingy}.st" ]; then
        echo "found partial downloaf, resuming: $file_thingy"
        axel -avn8  "$url" -o "$file_thingy"
    else
        echo "alteady have the file, skipped: $file_thingy"
    fi
}

这可以进入 ~/.bashrc 或进入 /usr/bin/custom_axel.sh 及更高版本:

while read URL; do
    name=$(basename "$URL") # but make sure it's valid.
    custom_axel "$name" "$URL"
done < /my/list/of/files.txt
于 2012-11-07T15:05:28.880 回答
4

Axel 使用状态文件,以 .st 扩展名命名。
它会在下载过程中定期更新。
当 axel 启动时,它首先检查 <file> 和 <file.st>。如果找到,则从停止的地方继续下载。
你有哪个版本?我得到了 Axel 2.4 版(Linux),它在 CTRL+C 后正确恢复。

于 2016-03-18T16:23:41.977 回答