最新消息:不要跟我说什么底层原理、框架内核!老夫敲代码就是一把梭! 复制,粘贴,拿起键盘就是干!!

解决aria2无法将文件下载到GoogleDrive、远程smaba等等挂载盘符中的方案

软件·服务器 楚盟 1147浏览 0评论

aria2是一个优秀的开源下载程序,我喜欢将它放在公网vps服务器上面,因为有公网ip和机房网络好的缘故所以下载起来速度比自己家要给力很多;不过低配vps往往硬盘很小容量远远不够我们折腾的,很容易装满服务器磁盘;所以得借助第三方空间来扩容vps磁盘空间用来存储文件;

但是在实际使用的过程中发现,vps通过rclone挂载的GoogleDrive、digitalocean的Spaces空间时导致各种异常甚至压根下载不了,所以就不得不手动下载到vps自带磁盘空间上面,然后转移文件,这样很麻烦效率也很低;

这几天我折腾内网穿透,成功的把家里内网杜甫中的磁盘通过samba挂载到了远程vps上面,用它来做测试,结果aria2无法工作,不能直接把文件下载到内网samba服务器服务器中;

然后我想了很多办法,然后谷歌查找了很久资料,终于找到一个完美的解决方案,彻底解决了这个问题;

aria2有个参数:–on-download-complete 这个参数是下载完成后执行脚本命令,这样的话,我就可以先把文件下载到vps指定文件夹里面,完成任务后自动将文件转移到挂载的远程盘符中,这样就没有冲突能够正常使用了;

一、自动转移下载文件脚本命令:转移到samba服务器文件夹中

先来张图看看我vps上的挂载情况

最后一个917G磁盘,就是我内网本地家里的电脑通过samba服务器映射到的vps中,我准备用下面这个脚本将aria2下载的文件转移到这个/mnt/share文件夹中

github代码副本地址:https://raw.githubusercontent.com/zhouxiangbin/Code/master/autoupload.sh

vi /root/autoupload.sh

#!/bin/bash
path="$3" #取原始路径,我的环境下如果是单文件则为/data/demo.png,如果是文件夹则该值为文件夹内某个文件比如/data/a/b/c/d.jpg
downloadpath='/tmp/down' #下载目录
mv='/mnt/share'   #mv挂载的目录

if [ $2 -eq 0 ] #下载文件为0跳出脚本
        then
                exit 0
fi

while true; do  #提取下载文件根路径,如把/data/a/b/c/d.jpg变成/data/a
    filepath=$path
    path=$%/*}; 
    if [ "$path" = "$downloadpath" ] && [ $2 -eq 1 ]
        then
        mv=${filepath/#$downloadpath/$mv} #替换路径
        mv -f "${filepath}" "${mv}"
        exit 0
    elif [ "$path" = "$downloadpath" ]   #文件夹
        then
        mv -f "${filepath}" "${mv}"/
        rm -rf  "${filepath}"
        exit 0
    fi
done

赋予文件执行权限:chmod 777 /root/autoupload.sh

二、测试aria2运行脚本命令:

 aria2c --on-download-complete=/root/autoupload.sh --dir=/tmp/down  http://speedtest.london.linode.com/100MB-london.bin

观察下载完成后,有没有将100MB-london.bin这个文件从/tmp/down目录转移到/mnt/share目录中,一切正常的话就可以将on-download-complete=/root/autoupload.sh这条规则添加到aria2.conf配置文件中去;

附加:使用rclone转移文件到GoogleDrive之类的挂载盘符中去的脚本

#!/bin/bash
path=$3
downloadpath='/root/downloads'
if [ $2 -eq 0 ]
        then
                exit 0
fi
while true; do
filepath=$path
path=$%/*};
if [ "$path" = "$downloadpath" ] && [ $2 -eq 1 ]
    then
    rclone move "$filepath" g:      
    exit 0
elif [ "$path" = "$downloadpath" ]
    then
    mv "$filepath"/ /lala/gdrive/"${filepath##*/}"/
    exit 0
fi
done

转载请注明:楚盟网 » 解决aria2无法将文件下载到GoogleDrive、远程smaba等等挂载盘符中的方案

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址