最新消息:

Nextcloud离线下载配置步骤

Nextcloud ZmmFly 7043浏览 3评论

一、准备

  1. Nextcloud后台安装ocDownload
  2. 系统安装aria2(编译或者yum|apt都行)

二、配置

1.Aria2c
vim /etc/aria2c.conf
按一下内容配置,具体路径替换为自己的

#用户名
#rpc-user=mxtech
#密码
#rpc-passwd=passwd
#设置加密的密钥
#rpc-secret=secret

#允许rpc
enable-rpc=true
#关闭IPv6 RPC, 如果不使用最好关闭,不然容易报错
disable-ipv6=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true

#是否启用https加密,启用之后要设置公钥,私钥的文件路径
#rpc-secure=true
#启用加密设置公钥
#rpc-certificate=/cert.cer
#启用加密设置私钥
#rpc-private-key=/key.key

#允许外部访问,false的话只监听本地端口
rpc-listen-all=false
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800

#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5

#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10

#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0

#断点续传
continue=true
#保存历史,true时生成的.aria2会保留,false时下载完成后自动删除
force-save=true
#save-session-interval=60
# 这两个是记录和读取下载历史用的,断电和重启时保证下载任务不会丢失
# 如果有时aria2不能启动,清空这里面的内容就行了
input-file=/mnt/aria2c-data/aria2.session
save-session=/mnt/aria2c-data/aria2.session

#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置
dir=/tmp
#dir可不配置,ocDownload会自动下载到当前登录用户下的Download文件夹

#下载自动删除同名.aria2文件,当下载完后aria2会给脚本传 3 个参数 $1 $2 $3 分别为 gid、文件数量、文件路径
on-download-complete=/home/www/aria2/autorm.sh
on-bt-download-complete=/home/www/aria2/autorm.sh

#Log
log-level=info
log=/mnt/aria2c-data/aria2c.log

#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
enable-mmap=true

#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=none

#不进行证书校验
check-certificate=false

#BT
#enable-dht=true

autorm.sh内容为:

#!/bin/sh
rm -rf $3.aria2

以上sh主要用于下载完成后自动删除创建的同名.aria2文件,
如果不使用脚本删除,可将force-save改为false,下载完成后自动清除,但是无法保存下载历史

创建管理脚本vim /etc/init.d/aria2c,路径和运行身份按需修改

#!/bin/bash
### BEGIN INIT INFO
# Provides:          aria2
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO

####Date:2019-7-27
####Writed by zmmfly
ARIA2C_PATH=/usr/bin/aria2c
ARIA2C_CONF_PATH=/etc/aria2/aria2c.conf
RUN_USER="www"

start()
{
    echo -n "Starting Aria2c..."
    sudo -u "$RUN_USER" "$ARIA2C_PATH" --conf-path="$ARIA2C_CONF_PATH" -D
}

stop()
{
    is_run
    if [ $? = 1 ]; then
        echo -n "Shutting down aria2c..."
        ps -ef | grep -v bash | grep -v systemctl | grep -v grep | grep aria2c | awk '{print $2}' | xargs kill

        echo -ne "\e[33mWaiting stop...\e[0m"
        while [ 1 ]; do
            is_run
            if [ $? = 0 ]; then
                break
            fi
        done

        is_run
        if [ $? = 0 ]; then
            echo -e "\e[32m[done]\e[0m"
        fi
    else
        echo -e "\e[31mAria2c is not running\e[0m"
    fi
}

get_pid()
{
    echo $( ps -ef | grep aria2c | grep -v bash | grep -v systemctl | grep -v grep | awk '{print $2}')
}

is_run()
{
    if [[ $( ps -ef | grep aria2c | grep -v bash | grep -v systemctl | grep -v grep | awk '{print $2}') ]] ; then
        return 1
    else
        return 0
    fi
}

status()
{
    is_run
    if [[ $? = 1 ]] ; then
        echo -e "\e[32mAria2c is running\e[0m"
    else
        echo -e "\e[33mAria2c not running\e[0m"
    fi
}

case "$1" in
    start )
        #echo $(ps -ef | grep aria2c)
        is_run
        if [ $? = 1 ] ; then
            echo -e "\e[33mAria2c is already running...\e[0m"
        else
            start
            is_run
            if [ $? = 1 ]; then
                echo -e "\e[32m[done]\e[0m"
            fi
        fi
    ;;

    stop )
        stop
    ;;

    restart )
        stop
        start
    ;;

    status )
        status
    ;;


    *)
        echo "Usage: $PROG {start|stop|restart|status|help}"
        cat <<EOF

start       - start aria2c
stop        - stop aria2c
restart     - gracefully restart aria2c
status      - show aria2c running status
help        - this screen

EOF
    ;;
esac

exit

保存后update-rc.d aria2c defaults创建服务, 然后systemctl start aria2c启动aria2c

PS:第一次写shell,和php,c的感觉完全不同

三、创建下载任务

从Nextcloud工具栏进入ocDownload

输入链接创建任务

在页面下方可以看见下载进度

下载完成后文件即保存在Nextcloud用户根路径Download文件夹中。

==============END============

Aria2c配置部分参考:https://www.orgleaf.com/2743.html

转载请注明:神奇海域 » Nextcloud离线下载配置步骤

发表我的评论
取消评论

Protected by WP Anti Spam

表情

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

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

网友最新评论 (3)

  1. 好像有个插件可以用。
    挖站否评论于5年前 (2019-08-22)回复
    • Nextcloud应用商店里好像只有ocDownload,17也快要出来了的样子
      ZmmFly评论于5年前 (2019-08-22)回复
  2. 脚本用的是update-rc.d,能用systemd吗?我试了debian9好像不行。现在update-rc.d不流行了,systemd用的越来越多。
    magicdog20评论于4年前 (2020-03-27)回复