要想事事顺心,唯有亲力亲为

自建Aria2离线下载使用技巧和问题整理(玩PT的一定要看)

PT注意事项

PT站有各种考核,所以需要额外的一些设置,编辑你的aria2.conf配置文件,在##BT/PT下载相关##这个类别下,部分选项请参考如下设置,最后一项分享率根据你的站点考核自行设置。

# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=false
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=false
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=false
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=false
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=2.0

设置完记得重启下Aria2使其生效。

/etc/init.d/aria2 restart

做种期间不会自动上传怎么办,那就手动上传。

网盘互拷

先来看网盘互拷,跟手动上传操作差不多。如果担心自己撸的5T OneDrive或无限Google Drive会随时扑街,就搞两个网盘互相对拷,总不能两个一起死吧。
我们可以再次配置Rclone,比如我给第二个配置命名为remote2,只是想手动上传的不用配置第二个。
还有一个问题就是拷贝一般是手动执行,且时间可能会很长,如果拷贝过程中关闭SSH客户端会导致拷贝中断,所以先安装以下screen,通过screen来进行拷贝,就算关闭SSH客户端就不会造成任务中断了。

yum -y install screen  #安装screen

那么screen安装好后,也绑定了二个网盘,这时我要将remote这个配置关联的OneDrive里的backup目录下的文件拷贝到remote2配置关联的OneDrive里的backup目录下的文件, 只需要执行以下命令即可。目录要跟你的对上。

screen -L rclone copy -v remote:backup remote2:backup
上面代码的大致意思
screen
• 在新建的screen窗口下运行命令(这样关闭ssh窗口也不会导致任务中断)
-L
• 在当前目录生成屏幕完整日志文件(如果第二次运行screen产生的日志文件会在以前的日志文件下面延续)
rclone
• 使用rclone命令
copy
• 复制,也就是A网盘文件复制到B网盘然后两个网盘都保留有这个文件,如果要A到B后就只有B网盘留有这个文件,则将copy改为move
-v
• rclone在拷贝或移动时会显示进度过程,前面screen -L是将这个同步进度保存为日志文件,方便同步失败的时候查看原因
remote:backup remote2:backup
• 将remote网盘配置下的backup文件夹(拷贝或移动到)remote2网盘配置下的backup目录,如果你想更进一步只针对网盘backup文件夹内的2ha.txt单个文件时,就这样写remote:backup/2ha.txt

如果不想手动网盘对拷,可以利用宝塔面板添加计划任务来定时对拷文件,将上面那条手动对拷的命令复制到计划任务的脚本内容里保存(如下图,screen -L这里就不用加了,计划任务自己会生成日志),然后到了设定的时间就会自动对拷了。

手动上传

VPS手动上传网盘跟网盘对拷命令格式一样,只要将第一个网盘目录改为VPS上的文件目录,但是需要精确到你要上传的文件或文件夹。但是有些文件名称很长且复杂,比如这样[Kamigami] Kara no Kyoukai Movie 01-08 [BD x264 1920x1080 DTS-HD(5.1ch,2.0ch) Sub(Chs,Jap)],像这种名称带括号空格和逗号的直接复制文件名到Linux里是不能识别的,需要在括号空格和逗号前面加入\才行,但是手动加麻烦还容易出错,比如你的aria2下载目录是/data/download,要指定前面的文件,那你copy时输入的内容就成这样/data/download/\[Kamigami\]\ Kara\ no\ Kyoukai\ Movie\ 01-08\ \[BD\ x264\ 1920x1080\ DTS-HD\(5.1ch\,2.0ch\)\ Sub\(Chs\,Jap\)\]

这长文件名就算你直接复制粘贴,光要加入\就很麻烦,也不建议通过修改文件名来简化输入,这可能会影响到做种。不过也还是有偷懒方法的,就是使用自动输入。例如还是这个文件名,然后这个目录下名称开头含[Ka的只有这个文件,那你输入时只要输到/data/download/\[Ka然后按下键盘Tab键就会自动补齐完整文件名了。

关于Screen和Rclone更多参数设置请查看官方文档
  • Screen官方文档: https://www.gnu.org/software/screen/manual/screen.html
  • Rclone官方文档:https://rclone.org/docs/
  • 清理日志文件

    自动上传和利用screen上传产生的日志文件随着下载上传量增加会越来越大,这两个日志的位置分别位于/root/.aria2/aria2.log/root/screenlog.0,过大会无法在线查看,需要下到本地查看,且内容过长不易审阅。

    要清理同样可以利用宝塔面板里的计划任务,比如清理aria2.log的脚本内容如下,清理screenlog.0的话只要改下代码后面文件目录即可。建议周期不要太短,否则下载或同步出错想看日志都没得看。

    cat /dev/null > /root/.aria2/aria2.log

    下载大于服务器硬盘容量的文件合集

    注意是文件合集,如果单个文件超过剩余硬盘容量是没法下载的。假如你要下一个110G的视频合集,合集包含2个视频,每个视频55G,但是你VPS硬盘容量只剩60G了。这种我们可以先添加任务,然后暂停这个任务,点击N个文件进入任务详情。

    进入文件列表,然后根据剩余硬盘大小勾选部分文件下载。

    点击选择文件可以根据文件类型进行快速选择(我也是无意中发现这个可以点击)。

    还有一个问题就是可能添加超过硬盘大小的任务时会直接失败,根本没法先暂停任务,也就没法进行部分文件选择。解决这个问题需要修改aira2.conf配置文件,在## 文件保存相关 ##这类里找到文件预分配方式,比如使用逗比Aria2脚本的默认配置是这样的# file-allocation=none,这种就需要修改分配方式为trunc(如下),记得去掉前面#使其生效,同样不要忘记保存配置文件后重启Aria2。

    file-allocation=trunc

    OneDrive被墙免代理直连下载

    有些地区宽带运营商把OneDrive给墙了(我这边今年6月份被墙了,7月份又放出来了(ˉ▽ˉ;)…),本地无法直连登录和下载,得挂代理才能下载(某种意义上还不如挂代理从服务器上下载更方便)。然后我又试了Rclone可以挂载的其它网盘,找到两个免代理的方案。

    方案1:采用迂回战术,先注册个koofr网盘(德国的),这个网盘免费空间只有2G,不过没关系,我们主要用它绑定OneDrive,然后就可以在这里免代理直连下载OneDrive的文件(生成的下载链接变成app.koofr.net开头的),移动宽带出口速度越来越垃圾,这个网盘很多时候我下不动,少数空闲时段百兆带宽跑满过,可以试一试。

    方案2:不用OneDrive,将Rclone挂载到Yandex这个俄罗斯的网盘,这个网盘上传跟下载都很快(我这边晚高峰下载会掉速),服务器上传Yandex比上传OneDrive(教育版)快两三倍,而且很稳定。只是免费空间只有10G,付费也便宜,就是要实名认证,否则外币信用卡都充值不了。它的实名认证很烦(国内只有厦门有个代理点,需真人带身份证办理,还要200RMB手续费),所以只能上传些不超过10G的小文件,然后下到本地后清空这个网盘,完全当做中转站用。

    单个大文件分卷上传

    OneDrive是有单个文件大小上传限制的,单个文件超过15G不能上传。像4K、原盘、Remux这类影片基本都会超过这个大小。这时就得在服务器上对大文件进行分卷压缩然后上传网盘,因为是要下到PC上用,所以用zip来压缩,但是linux压缩zip得分两次,一次是先将文件压成一个zip,然后分卷这个zip,所以如果你要分卷一个40G的源文件,最好服务器剩余硬盘空间有80G。

    首先使用下面命令安装zip

    yum install -y unzip zip

    这样就能使用zip压缩了,接着假设你要压缩的文件名为2ha.iso,这个文件大小为40G,位于/data/download/这个目录,准备将他分卷成5G大小的8个文件,参考操作如下。

    cd /data/download  #先进入这个目录位置
    zip -r name.zip 2ha.iso  #将2ha.iso压缩成一个name.zip
    zip -s 5G name.zip --out name2.zip  #将name.zip按5G大小分卷压缩,分卷名称为name2,不要跟单个zip同名

    上面分卷使用的单位除了G也可以用M。将分卷上传到网盘,再从网盘将所有分卷下载到电脑后,放在同个文件夹,然后同时解压就出来2ha.iso了。

    给AriaNg面板添加文件管理选项

    因为经常会用到文件管理,每次手动输入网址挺麻烦的,干脆在AriaNg的界面加一个文件管理选项,效果如下。

    要添加选项你得编辑AriaNg目录(就是安装教程里宝塔站点的目录 )下的index.html(修改之前建议你先备份一下),点开编辑后会发现排版挤在一起很乱不容易找,这里用搜索定位,因为是要在Aria2 状态下面加选项,所以搜索Aria2 Status,找到后发现Aria2 Status的li标签内容是这样的,不用细看。

    <li data-href-match="/status">
    <a href="#!/status">
    <span class="label pull-right" ng-if="globalStatusContext.isEnabled || isCurrentRpcUseWebSocket" ng-class="{'label-primary': taskContext.rpcStatus === 'Connecting', 'label-success': taskContext.rpcStatus === 'Connected', 'label-danger': taskContext.rpcStatus === 'Disconnected'}" ng-bind="taskContext.rpcStatus | translate"></span> 
    <i class="fa fa-server"></i>
    <span translate>Aria2 Status</span>
    </a>
    </li>

    找到Aria2 Status的li标签结尾,也就是</li>,在这后面加入如下代码,注意下面代码里面的http://IP:8080,将这个地址改为你FileBrowser的地址。

    <li data-href-match="/file">
    <a href="http://IP:8080" target="_blank">
    <i class="fa fa-folder"></i>
    <span translate>文件管理</span>
    </a>
    </li>

    保存后刷新下你的AriaNg界面应该就能看到这个选项了,如果没出现清理下浏览器缓存再刷新试试。

    其它问题说明

    1、 下载完成会占用VPS空间吗
    要等完全上传到网盘上后就不占用VPS空间了,你也可以在文件管理下对不需要的文件进行删除。
    2、 文件下载100%完成了,没有上传到OneDrive网盘
    文件要从正在下载进入已完成才会触发上传脚本,有时“正在下载”显示100%完成了也不会马上进入“已完成”,因为BT要做种,我也不建议图自己方便将分享率设0。看看国内BT环境,既然出来下BT,本着你好我好大家好的原则,建议最小也设置个1.1(比下载多上传0.1的数据),做种时不会自动上传可以使用上面手动上传的方案,注意用copy不要用move,用move传完会把你服务器文件删了,影响你做种率(PT的尤为注意)。
    3、 上传总是失败,OneDrive下生成一大堆TMP临时文件
    VPS内存太小(一般发生在512M的小鸡上)导致的上传崩溃,你可以在rclone手动上传命令后面加入--buffer-size=8M(buffer-size默认是16M)或者加入--transfers=3(同时上传数3,默认是4)
    有时候上传太频繁也会导致失败,就像你用PanDownload下载百度网盘一样,下多了也会导致失败(这里是上传),可以先等会再手动上传,或加入--tpslimit 1就不会那么容易失败了(玄学)。

    添加评论

    要想事事顺心,唯有亲力亲为

    近期文章

    近期评论

    归档

    分类

    其他操作