我有一个脚本可以读取一些 url 并将它们带到 axel 以下载它们。我有时想停止脚本并进一步恢复它。Axel 可以恢复文件下载。因此,如果我在下载时按 Ctrl+C,下一次将从文件的简历开始。
但 axel 不检查文件是否存在。所以它将“.0”附加到文件名的末尾并开始下载它两次。如果存在同名文件,我如何告诉 axel,跳过它而不下载它?
我有一个脚本可以读取一些 url 并将它们带到 axel 以下载它们。我有时想停止脚本并进一步恢复它。Axel 可以恢复文件下载。因此,如果我在下载时按 Ctrl+C,下一次将从文件的简历开始。
但 axel 不检查文件是否存在。所以它将“.0”附加到文件名的末尾并开始下载它两次。如果存在同名文件,我如何告诉 axel,跳过它而不下载它?
如果您想确保 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
Axel 使用状态文件,以 .st 扩展名命名。
它会在下载过程中定期更新。
当 axel 启动时,它首先检查 <file> 和 <file.st>。如果找到,则从停止的地方继续下载。
你有哪个版本?我得到了 Axel 2.4 版(Linux),它在 CTRL+C 后正确恢复。