Rat's

VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传
说明:我们从VPS上传文件到OneDrive网盘的方法很多,包括Rclone挂载,OneIndex程序的上传功能,...
扫描右侧二维码阅读全文
19
2018/08

VPS上传文件到OneDrive网盘脚本,可配合Aria2实现自动上传

说明:我们从VPS上传文件到OneDrive网盘的方法很多,包括Rclone挂载,OneIndex程序的上传功能,不过2个在上传的时候都还是有点BUG,前者会出现丢文件的情况,后者也会出现上传失败,都不是很理想,这里博主再介绍个OneDrive上传脚本,几乎不会出现上传问题,很好用,由萌咖大佬制作,并将其适用于Aria2的自动上传,这里说下具体操作。

更新

【2018.10.30】
修复上传脚本BUG,包括修复了不能上传文件夹功能,修复了不能正确上传文件名中包含空格的项目。
【2018.10.29】
优化OneDrive网盘脚本。优化认证步骤。
独家分享萌咖大佬的Aria2自动上传脚本,判断更加细节,支持单文件、文件夹里的单文件、文件夹里的多文件及文件夹上传。超过15G文件停止上传(onedrive限制)。

说明

【2018.11.16】
#脚本经排查,包含空格的文件夹和文件夹均可以上传。
#如果你依然有部分文件夹或文件上传失败(前提是常规文件可以自动上传),可以留言说下文件/文件夹具体名称类型。
#手动上传的,建议把文件/文件夹加个引号,比如onedrive -f '/root/moerats.txt'。

方法

Github地址:https://github.com/0oVicero0/OneDrive

脚本特性:脚本支持文件夹上传,支持获取文件的匿名直链,且只适用于OneDrive非个人版。

1、安装脚本
安装curl,用于访问API

#Ubuntu和Debian系统
apt-get install -y curl

#Centos系统
yum install curl -y

运行命令安装脚本:

#为了方便小白,本脚本内置萌咖大佬永久有效的应用参数,可以直接使用,如果你不放心可以自己获取参数,不过可能会遇到很多坑,建议直接使用脚本默认的参数
wget --no-check-certificate -qO- "https://raw.githubusercontent.com/0oVicero0/OneDrive/master/OneDrive.sh" |bash

本脚本需要三个参数Client IDSecretReply URL,均需要在/usr/local/etc/OneDrive/onedrive.cfg文件里修改,参数获取看下面,当然你也可以不用管,直接进行步骤3

2、获取参数
先访问Microsoft Azure Management Portal,然后点击左侧菜单栏中的Azure Active Directorg,选择应用注册,再点击页面上方的新应用程序注册。
请输入图片描述
输入名称如:OneDrive for Linux,应用程序类型选择Web应用/API,填入登陆URLhttps://login.microsoftonline.com/,再点击创建。
请输入图片描述
然后点击刚刚创建的应用程序,复制应用程序ID,即脚本需要的Client ID参数,再点击左上角的设置。
请输入图片描述
然后进行如下修改:
请输入图片描述

#点击右边的回复URL,将其修改为:https://onedrive.live.com/about/business/,即脚本所需要的Reply URL参数。
#点击所需权限,点击Windows Azure Active Directory确认是否已选中Sign in and user profile,如果没有则选中并点击完成。
#点击上方的添加,点击选择API,选中Office 365 SharePoint Online,并点击选择。在选择权限中选中Read user files 和Read and write user files,并点击选择。点击完成按钮,并关掉此小窗口。
#点击密钥,填入密钥描述,如:OneDrive,选择年限1年,点击保存,再复制密匙,即脚本所需要的Secret参数。

不过这里说下密匙(Secret参数)填写的一个坑,由唯一度博主填平。就是当我们获取到带+号的密匙时候,我们需要使用编码符号,把+改成%2B,然后再填入脚本里,不然最后会出现Something went wrong, here is the API response的错误,导致验证失败。

3、运行账号认证程序
运行命令onedrive -a,将返回的网址复制到浏览器打开,再登陆你的OneDrive for Business账号,登陆成功后复制地址栏中的地址,粘贴到SSH客户端里,敲回车键即可。
请输入图片描述
如果返回以下字段:It seems like we have a refresh token, so we are ready to go,那就恭喜你,设置成功!

使用

1、使用命令

onedrive --help
 
#####################################################################
Usage: onedrive [OPTIONS] file1 [file2...]
       onedrive-d folder
 
Options:
  -d, --debug        Enable debug mode
  -a, --authorize    Run authorization process
  -f, --folder       Upload files into this remote folder
  -c, --creat        Creat remote folder."
                     Directory names are separated with a slash, e.g.
                     rootFolder/subFolder
                     Do NOT use a trailing slash!
  -h, --help         Show this help
  -r, --rename       Rename the files during upload
                     For each file you specify you MUST also specify
                     the remote filename as the subsequent parameter
                     Be especially careful with globbing!
  -s, --silent       Silent mode for use in crontab scripts.
                     Return only exit code.
  -ls,--list         Show the itmes in this directory.
  -l, --link         Show the file share link.
      
#####################################################################

2、命令示范
如果我们要上传/root文件夹里面的moerats.txt,使用命令:

#此命令默认将moerats.txt文件上传到OneDrive根目录
onedrive /root/moerats.txt
#此命令会将/root文件夹和里面的文件一起上传
onedrive -f /root

如果我们想直接查看OneDrive网盘目录的文件,使用命令:

#此命令只查看根目录文件
onedrive -l
#如果我们要查看根目录root文件夹里的文件
onedrive -l /root

请输入图片描述

Aria2自动上传

上传方法参考:使用Aira2下载文件后自动上传到Google Drive网盘

上传代码如下:

#!/bin/bash

GID="$1";
FileNum="$2";
File="$3";
MaxSize="15728640"
RemoteDIR="";
LocalDIR="/home/www/download/";  #Aria2下载目录,记得最后面加上/

if [[ -z $(echo "$FileNum" |grep -o '[0-9]*' |head -n1) ]]; then FileNum='0'; fi
if [[ "$FileNum" -le '0' ]]; then exit 0; fi
if [[ "$#" != '3' ]]; then exit 0; fi

function LoadFile(){
  IFS_BAK=$IFS
  IFS=$'\n'
  if [[ ! -d "$LocalDIR" ]]; then return; fi
  if [[ -e "$File" ]]; then
    if [[ $(dirname "$File") == $(readlink -f $LocalDIR) ]]; then
      ONEDRIVE="onedrive";
    else
      ONEDRIVE="onedrive-d";
    fi
    FileLoad="${File/#$LocalDIR}"
    while true
      do
        if [[ "$FileLoad" == '/' ]]; then return; fi
        echo "$FileLoad" |grep -q '/';
        if [[ "$?" == "0" ]]; then
          FileLoad=$(dirname "$FileLoad");
        else
          break;
        fi;
      done;
    if [[ "$FileLoad" == "$LocalDIR" ]]; then return; fi
    if [[ -n "$RemoteDIR" ]]; then
      Option=" -f $RemoteDIR";
    else
      Option="";
    fi
    EXEC="$(command -v $ONEDRIVE)";
    if [[ -z "$EXEC" ]]; then return; fi
    cd "$LocalDIR";
    if [[ -e "$FileLoad" ]]; then
      ItemSize=$(du -s "$FileLoad" |cut -f1 |grep -o '[0-9]*' |head -n1)
      if [[ -z "$ItemSize" ]]; then return; fi
      if [[ "$ItemSize" -ge "$MaxSize" ]]; then
        echo -ne "\033[33m$File \033[0mtoo large to spik.\n";
        return;
      fi
      eval "${EXEC}${Option}" \'"${FileLoad}"\';
      if [[ $? == '0' ]]; then
        rm -rf "$FileLoad";
      fi
    fi
  fi
  IFS=$IFS_BAK
}
LoadFile;

有人反映文件夹上传后删除不了,如果出现该情况的可以删除最后面一行if [[ $? == '0' ]]; then代码。

文章参考:OneDrive for Business

需要Office365 E3 MSDN 25的可加入萌咖杂货店QQ群购买→【点击加入
最后修改:2018 年 11 月 17 日 09 : 02 AM

发表评论

182 条评论

  1. jvc2020

    大佬 设置后不会上传 日志显示

    [#c6ba2f 0B/0B CN:1 DL:0B]

    FILE: http://pic1.win4000.com/wallpaper/2018-11-06/5be123c5133f8.jpg

    [#c6ba2f 0B/0B CN:1 DL:0B]
    [#c6ba2f 0B/1.1MiB(0%) CN:1 DL:59KiB ETA:19s]
    [#c6ba2f 128KiB/1.1MiB(10%) CN:1 DL:111KiB ETA:9s]
    [#c6ba2f 272KiB/1.1MiB(22%) CN:1 DL:126KiB ETA:7s]
    [#c6ba2f 464KiB/1.1MiB(38%) CN:1 DL:144KiB ETA:5s]
    [#c6ba2f 656KiB/1.1MiB(54%) CN:1 DL:157KiB ETA:3s]
    [#c6ba2f 864KiB/1.1MiB(72%) CN:1 DL:165KiB ETA:1s]
    [#c6ba2f 1.1MiB/1.1MiB(99%) CN:1 DL:190KiB]

    11/16 11:26:56 [NOTICE] Download complete: /root/Download/5be123c5133f8.jpg
    Could not execute user command: /root/.aria2/autoupload.sh: No such file or directory

    11/16 11:27:06 [NOTICE] Serialized session to '/root/.aria2/aria2.session' successfully.

    还有个问题
    手动上传 单文件能上传,输入命令行 上传文件夹里的文件 onedrive -f /root/moerats.txt 文件没传过来 直接在OneDrive里新建了root moerats.txt 两个目录

    1. Rat's
      @jvc2020

      第一个问题显示脚本不存在,看你填的路径对不对;至于第二个问题是之前用的修改的脚本,现在又用了原版,但文中的命令没更新过来,所以。

  2. xenon

    小白想问下加了这个脚本就能自动上传了吗?还是说要算上文章结尾的代码才可以自动

    1. Rat's
      @xenon

      首先需要安装这个脚本,配置好,然后再用Aria2结合下面的自动上传脚本才能自动上传。

  3. 9527

    博主,手动可以上传,能不能和这个网址一起用
    https://www.moerats.com/archives/700/
    有没有什么顺序步骤会不会把之前的覆盖掉,那个上传脚本文件取名有没有要求 autoupload.sh和oneindexup.sh都可以吗

    1. Rat's
      @9527

      可以一起用,文件取名和存放目录都无所谓,你只要在aria2配置文件填写参数的时候,后面文件的路径要填对还有名称,比如你放在/hone文件夹,文件名为xx.sh,那你在aria2里填的就是on-download-complete=/home/xx.sh

  4. 王七

    这个脚本有些上传不了,什么时候升级?可不可以指定后缀名来过滤掉一些不想上传的文件?

    1. Rat's
      @王七

      这个排查核心脚本工作量很大,看萌咔大佬啥时候抽空搞完吧,估计快了。至于你提的,只能待定,目前主要先解决上传问题。

  5. chem

    大佬这个脚本还是存在文件夹名字有空格的情况下无法上传啊

    1. amtih
      @chem

      感觉除掉空格也不行

    2. Rat's
      @chem

      好的,萌咔大佬正在排查核心上传脚本的问题,近期升级。

      1. hbin
        @Rat's

        文件夾不能上傳的問題是解決了嗎?我今天下文件夾的bt還是沒進行上傳

  6. 嘿嘿嘿!

    11/10 20:22:34 [NOTICE] Seeding is over.
    [#96079d SEED(0.0) CN:9 SD:3]

    11/10 20:22:34 [NOTICE] Download complete: /root/Download/猪猪字幕组860[MP4]

    11/10 20:22:34 [NOTICE] Your share ratio was 0.0, uploaded/downloaded=0B/258MiB
    Invalid item.

    老大帮看看是什么问题?bt下载完成上传显示无效项目?

    1. 嘿嘿嘿!
      @嘿嘿嘿!

      单文件下载完以后上传没问题,就bt下载带文件夹上传不了

      1. Rat's
        @嘿嘿嘿!

        文件夹名称是什么?说具体点才好检测

      2. Rat's
        @嘿嘿嘿!

        常规的文件夹应该没问题,近期会升级一下脚本。

  7. chen

    大佬这个脚本好像还是存在中文文件夹名中间有空格的情况下无法上传的问题

  8. 文骞

    服务器重启后,上传文件显示No refresh token received from API. Please try again or re-authorize.
    从新授权后之前没上传完的还会继续上传吗?

    1. Rat's
      @文骞

      貌似不会,重启命令会断开。

  9. tywg

    使用./onedrive -f /root/*.txt上传,总是有一个文件不能上传

    1. Rat's
      @tywg

      不能上传的直接用全名传吧。

  10. kinavalon

    大佬,我用这个脚本,下载的是单个文件的时候能自动上传,但是下载的带文件夹的话,不管文件夹里面有几个文件,都不会自动上传

    1. Rat's
      @kinavalon

      文件夹名称有不有特殊符号?一般我测试是没问题的。

      1. kinavalon
        @Rat's

        测试了一下,下载了一个不带特殊符号的,还是不能自动上传

        1. Rat's
          @kinavalon

          这个就不清楚了,你看下aria2日志?

          1. kinavalon
            @Rat's

            看了,上传成功的会留下记录,upload xxx as xxxxx,但是没有上传的也找不到upload的记录

            1. Rat's
              @kinavalon

              那就不知道了。

      2. kinavalon
        @Rat's

        [ ]这个算么? 大部分都是带日文和这个

  11. idm

    今晚再次尝试,终于可以了,一切正常,非常感谢大佬的脚本,终于实现文件夹上传了。Google大法好!

    1. Rat's
      @idm

      解决好就行。

  12. idm

    大佬,我用的是这个https://github.com/weiyidu/OneDrive/blob/master/autoupload.sh,但是onedrive是按照你教程搞的

    1. Rat's
      @idm

      你发的这个根源是同一个,但是是修改我这个脚本的,所以上传脚本不兼容。

      1. idm
        @Rat's

        我是按照你的教程搞的one drive,为什么用不了你的脚本,我后来网上找的这个才会自动上传

        1. Rat's
          @idm

          我理解错了,我是可以用的。不知道你为啥用不了。

          1. idm
            @Rat's

            大佬可以帮我看看吗?我需要上传文件夹的功能

  13. 伊尹

    怎么把下载好的整个文件夹上传啊

    1. Rat's
      @伊尹

      这个上传脚本是可以上传文件夹的。

      1. 伊尹
        @Rat's

        我发现BT种子下载的文件夹带空格的话,就会上传失败但是会把下载的文件夹删除。

        1. Rat's
          @伊尹

          好的,明天修复该问题。

  14. idm

    大佬,脚本搞好了不会自动上传是怎么回事,用别的脚本都是正常,求大佬帮帮我

    1. Rat's
      @idm

      授权,重启aria 2都做了没?

      1. idm
        @Rat's

        都搞了,用别人的上传脚本都是OK的

        1. Rat's
          @idm

          别人的?话说这个上传脚本只适合这个文章,也就是说只能和这个文章的onefrive脚本一起用。

          1. idm
            @Rat's

            大佬方便加我QQ吗?帮我看看740120075

  15. 信仰

    这次修复是不是只要只要更新上传代码?

    1. Rat's
      @信仰

      onedrive脚本也要重新来,和之前不一样。

      1. yang
        @Rat's

        想问一下。同样的路径的相同文件可以做判断不重复上传吗?现在发现一个文件夹中上传的话,相同的文件还会重新上传一遍。有没有可能重复文件就跳过呢?

        1. Rat's
          @yang

          上传命令运行一次后,直接删掉文件夹?

          1. yang
            @Rat's

            我的意思是vps和onedrive相同路径下的文件重复上传到话。可以跳过吗?比如vps 有 a/b/test.txt文件。onedrive也有相同的a/b/test.txt。能不能在上传到时候已存在的文件可以跳过,不需要再重新上传一次。

            1. Rat's
              @yang

              这个没办法,上传命令只运行了一次,会不会是一个文件下了几次?

  16. 信仰
    Download Progress Summary as of Tue Oct 30 12:11:19 2018

    [#9d2c64 0B/9.7MiB(0%) CN:1 DL:0B]

    FILE: /usr/local/caddy/www/aria2/Download/WinSCP-5.13.4-Setup.exe

    [#9d2c64 0B/9.7MiB(0%) CN:1 DL:0B] [FileAlloc:#9d2c64 0B/9.7MiB(0%)]
    [#9d2c64 336KiB/9.7MiB(3%) CN:1 DL:333KiB ETA:28s]
    [#9d2c64 2.3MiB/9.7MiB(23%) CN:1 DL:1.1MiB ETA:6s]

    10/30 12:11:22 [NOTICE] Download complete: /usr/local/caddy/www/aria2/Download/WinSCP-5.13.4-Setup.exe
    Could not execute user command: /root/GDupload.sh: No such file or directory

    这上传错误啥意思?

    1. Rat's
      @信仰

      上传脚本不存在,或者没给root权限。

      1. 信仰
        @Rat's

        已解决,谢谢博主

  17. 1

    大佬。脚本是不是更新了。重新走了一遍流程安装了一遍,然后这次bt下载完后不会自动删除上传完的文件了。而且脚本好像和以前不一样了

    1. Rat's
      @1

      脚本和网上公开的的都不一样了,不过做了很多细节判断,刚刚改了下脚本参数,应该可以上传文件夹了?

  18. 幻想丶一下

    重新设置过后会删除了,应该是我操作不当的原因!感谢你的脚本!

    1. yang
      @幻想丶一下

      我刚刚测试也是删除不了文件,请问你是怎么设置的?

  19. 幻想丶一下

    你好,在用了29号更新的脚本后,下载完东西可以上传到oneindex,但是却不会自动删除VPS里的文件,请问是脚本的问题还是设置的问题?

    1. Rat's
      @幻想丶一下

      脚本应该是没问题的,只是强化了细节。

      1. yang
        @Rat's

        我是带有一层文件夹。可以正常上传。但是vps里文件没有删除。单个文件上传和删除正常。博主有遇到吗

        1. Rat's
          @yang

          已修改,你再试试文件夹能不能上传?

          1. yang
            @Rat's

            博主,刚刚测试。百度云下载一个文件,带一层文件夹。aria2下载完成之后,在下载目录中该文件是放在一个文件夹中的。文件夹和文件都能成功上传到onedrive,但是vps中aria2下载目录下,文件和文件夹都还在。没有删除掉。

            1. Rat's
              @yang

              你是用的我今天更新的脚本?这个理论上mv成功后,就会自动rm。

              1. 1
                @Rat's

                大佬,我也用的30号的脚本,和他的情况一样,种子,下好所有文件能上传,但是不会自动删除vps硬盘里的文件。

                1. Rat's
                  @1

                  脚本逻辑是没问题的,或者你把后面这行判断代码删掉if [[ $? == '0' ]]; then,就是不管上传成功与否,文件都给删掉。

  20. B.w

    大佬, 这个脚本下载单个文件上传onedrive没有问题, 用bt 下载的时候, onedrive里面没有文件, vps 里面下载完的文件也被删掉了. 这个应该是什么问题? 可以查log 吗? 需要去哪看log 呢?

    1. B.w
      @B.w

      补充下, 下载小文件没问题, 就是好像超过3g 的文件就上传不了?

      1. Rat's
        @B.w

        用的什么Aria2脚本?你可以查看Aria2日志

        1. B.w
          @Rat's

          就是教程里的逗比的aira2 脚本, aira2 日志应该要去哪里查看?

          1. Rat's
            @B.w

            这个运行一键脚本的时候善于观察,你直接运行他的脚本的时候,有查看日志选项。

            1. B.w
              @Rat's

              找到日志了. 貌似还没上传就被删掉了? 我现在把删文件那段注释掉再试试

              10/27 12:45:20 [NOTICE] Download complete: /download/屋顶探险家.Look.Up.2017.1080p.WEB-DL.X264.AAC.CHT-BTxiaba
              10/27 12:45:20 [NOTICE] Your share ratio was 2.3, uploaded/downloaded=4.3GiB/1.8GiB
              An error has occurred while uploading '/download/屋顶探险家.Look.Up.2017.1080p.WEB-DL.X264.AAC.CHT-BTxiaba' (File does not exist)

              1. B.w
                @B.w

                当BT下载只有一个文件夹,文件夹里只有一个文件,这个上传脚本就会出错了

                num=1
                path='/download/a/1.a'
                downloadpath='/download' #下载目录

                1. Rat's
                  @B.w

                  文章所有脚本已更新,你再看看。

                  1. B.w
                    @Rat's

                    自己改了下之前的脚本 现在上传没问题了,懒得再折腾了

                    1. Rat's
                      @B.w

                      可以试试现在这个脚本,加强版。

                      1. B.w
                        @Rat's

                        需要更新onedrive, 还是只需要换上传脚本就可以?
                        还有个问题, 输入框的狗年吉祥对手机很不友好, 把输入框都遮住了.

                        1. Rat's
                          @B.w

                          全部更新。

  21. nssanc

    [OK] SSL 证书生成脚本安装成功
    [Sun Oct 28 02:42:20 CST 2018] Standalone mode.
    [Sun Oct 28 02:42:21 CST 2018] Registering account
    [Sun Oct 28 02:42:22 CST 2018] Registered
    [Sun Oct 28 02:42:22 CST 2018] ACCOUNT_THUMBPRINT='RY4tuAQX0ce-xByOiRX4HSfPUw73QmqCRVa6-F00bV4'
    [Sun Oct 28 02:42:22 CST 2018] Creating domain key
    [Sun Oct 28 02:42:22 CST 2018] The domain key is here: /root/.acme.sh/120.78.80.232_ecc/120.78.80.232.key
    [Sun Oct 28 02:42:22 CST 2018] Single domain='120.78.80.232'
    [Sun Oct 28 02:42:22 CST 2018] Getting domain auth token for each domain
    [Sun Oct 28 02:42:22 CST 2018] Getting webroot for domain='120.78.80.232'
    [Sun Oct 28 02:42:22 CST 2018] Getting new-authz for domain='120.78.80.232'
    [Sun Oct 28 02:42:23 CST 2018] The new-authz request is ok.
    [Sun Oct 28 02:42:23 CST 2018] new-authz error: {"type":"urn:acme:error:malformed","detail":"Error creating new authz :: Issuance for IP addresses not supported","status": 400}
    [Sun Oct 28 02:42:23 CST 2018] Please add '--debug' or '--log' to check more details.
    [Sun Oct 28 02:42:23 CST 2018] See: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh
    [Error] SSL 证书生成失败
    大佬。这个怎么解决啊,阿里云的只有公网ip

    1. nssanc
      @nssanc

      Aria2+Aria2Ng+OneIndex一键安装脚本,下载后自动上传至OneDrive
      是这篇文章里的

      1. nssanc
        @nssanc

        看着提示不支持ip地址的能不能跳过这个ssl证书安装啊,谢谢大佬了

        1. Rat's
          @nssanc

          IP不支持签发SSL证书,可以跳过,但需要修改脚本,不过一个域名不贵啊,两三块钱一年。

          1. B.w
            @Rat's

            试了下 拿掉删除文件的部分还是出现同样的错误,好像是脚本把文件夹路径当成了文件上传,所以找不到文件?大佬能不能看下脚本会不会有这个问题?

            1. Rat's
              @B.w

              脚本全部更新了,你再看看?

  22. 小小

    按照步骤操作已经提示了It seems like we have a refresh token, so we are ready to go
    上传还报错
    [root@centos-s-1vcpu-1gb-blr1-01 OneDrive]# ./onedrive /root/moerats.txt

    An error has occurred while uploading '/root/moerats.txt' (Code: 000)

    1. Rat's
      @小小

      你测试上传的时候有moerats.txt这个文件?

      1. 小小
        @Rat's

        有的,上传其他文件也失败

        1. Rat's
          @小小

          这个问题,我只在这三个参数Client ID、Secret、Reply URL有误的情况下出现过,我提供的应该没啥问题,你先检查下,有空我自己测试下。

  23. cilone

    博主你好,能不能在自动上传脚本里添加个命令,上传完成后执行更新PyOne的缓存呢?应该怎么添加?

    1. Rat's
      @cilone

      添加到上传命令后面,比如/usr/local/etc/OneDrive/onedrive "$1"的下面一排。

  24. web

    大佬,如果做到上传文件夹自己文件夹里面的文件?

    1. Rat's
      @web

      什么意思。

      1. web
        @Rat's

        不好意思,有错别字。
        怎么做到上传文件夹以及文件夹里面的文件到OneDrive上面?

  25. 123

    大佬,我在装了 LEDE 的路由上上传文件失败,显示

    xargs: unrecognized option: P
    BusyBox v1.29.2 () multi-call binary.

    Usage: xargs [OPTIONS] [PROG ARGS]

    Run PROG on every item given by stdin

    -p Ask user whether to run each command -r Don't run command if input is empty -0 Input is separated by NUL characters -t Print the command on stderr before execution -e[STR] STR stops input processing -n N Pass no more than N args to PROG -s N Pass command line of no more than N bytes -x Exit if size is exceeded

    请问这是啥意思。

    1. Rat's
      @123

      这个问题不是很清楚。

      1. 123
        @Rat's

        解决了,把 onedrive 文件里的 -P${max_upload_threads} 删掉就行。

  26. wzb

    日志如下:
    10/11 16:48:43 [NOTICE] Download complete: /home/aria2/1/w7144.pdf
    An error has occurred while uploading '/home/aria2/1' (File does not exist)
    由于是小文件,还没来得及上传就被rm掉了有什么好的解决办法吗

    1. Rat's
      @wzb

      你可以编辑下脚本,把删除命令放在上传命令后面试试。

  27. wzb

    多任务下载的时候自动上传脚本会不会把正在下载的.aria2文件或者已经下好但是还没上传的文件rm掉...我最大同时下载数10,下载100个文件最终在onedrive上只有56个文件,而且还有些没下完的.aria2文件

    1. Rat's
      @wzb

      这个我还没怎么注意。

  28. jjc

    老板这个同时开多个上传吗

    1. Rat's
      @jjc

      应该可以,多开几个窗口试试。

  29. eq65we46qw4e5

    手动上传是没有问题的 脚本改了 路径 #!/bin/bash
    num="$2"
    path="$3"
    downloadpath='/aaa' #下载目录

    if [ $num -eq 0 ]

    then exit 0

    然后airia2 conf 里也写了

    bt-save-metadata=true

    on-download-complete=/root/autoupload.sh
    为什么就是不上传呢

    1. Rat's
      @eq65we46qw4e5

      有没有用root给可执行权限。

  30. eq65we46qw4e5

    这个需要RC 挂载么

    1. Rat's
      @eq65we46qw4e5

      不需要挂载,就是个上传脚本而已。

  31. eweqweqw

    复制这段新建 然后保存 修改路径 然后赋予权限然后重启 为什么不自动上传呢

    1. Rat's
      @eweqweqw

      aria2配置参数设置了没?

      1. eq65we46qw4e5
        @Rat's

        配置了 默认路径都是/aaa

  32. eweqweqw

    所以说 这个具体要怎么写呢 自动上传脚本....而且手动上传是根目录 OneIndex 读不到

    1. Rat's
      @eweqweqw

      方法参考链接给你了,OneIndex是可以读取网盘根目录的。

  33. klfgf

    你好 aria2上传代码 是不是只需要修改下载目录就可以 上面两个不用改吧? 上传提示Could not execute user command: /root/.aria2/onedrive.sh: No such file or directory 文件确定是存在的

    1. Rat's
      @klfgf

      首先新建一个上传脚本文件,下载目录设置成aria2下载目录,再到aria2配置文件里添加上传参数,最后授权脚本可执行权限。

  34. 一起走吧

    请问这个脚本创建在哪个目录下面啊 downloadpath这个参数是不是aria的下载目录

    1. Rat's
      @一起走吧

      对,就是指的下载目录。

  35. lin

    VJmSptRZciy8d2q_iWRMwoiTXWuBjhRPKE866X06Sl-KjZzbGixZXWhWvfVJSAA

    It seems like we have a refresh token, so we are ready to go.

    [root@dm1 OneDrive]# ./onedrive -l
    [root@dm1 OneDrive]# ./onedrive -l
    [root@dm1 OneDrive]# ls
    json-parser onedrive onedrive-authorize onedrive-base onedrive-d onedrive.cfg
    [root@dm1 OneDrive]# touch 2.txt
    [root@dm1 OneDrive]# ./onedrive -f 2.txt
    Could not create folder '2.txt' in ''
    为啥还是不能上传呢

    1. Rat's
      @lin

      建议使用默认参数,如果你用的默认参数,那就检查下你认证程序填的code看看。

  36. stone5

    大佬 你好,我想用aria2自动上传文件到onedrive的根目录下的文件夹中,上传代码要怎么样修改?谢谢

    1. Rat's
      @stone5

      编辑/usr/local/etc/OneDrive/onedrive.cfg配置文件,修改参数export api_root_folder=”root”,root就是指根目录,不过修改的文件夹名称有规定,你可以参考这个:https://docs.microsoft.com/zh-cn/onedrive/developer/rest-api/api/drive_get_specialfolder。

      1. 一起走吧
        @Rat's

        我用的是本文的这种方法,想把文件传到子文件夹应该怎么做?是修改脚本里面的参数吗

        1. Rat's
          @一起走吧

          对,步骤已经给你了,子文件夹命名需要规范。

  37. 小志

    为啥就是自动不上传呢?手动上传可以

    1. Rat's
      @小志

      检查下Aria2配置问题,还有上传脚本授权,脚本我测试是没问题的,再不行你可以换系统试试。

      1. 小志
        @Rat's

        直接能调用第三个上传脚本用?
        还是先把挂载弄上?
        还有第三个脚本出了目录还有别的参数要修改吗

        1. Rat's
          @小志

          你用的是oneindex?用这个不需要挂载,可以参考https://www.moerats.com/archives/482/设置上传脚本,上传代码用本文的,最后记得重启Aria2。

  38. starixk

    bash 错误/root/.aria2/oneindexup.sh: line 5: [: -eq: unary operator expected
    ./onedrive 可正常上传
    更改为双等号也提示错误
    /root/.aria2/oneindexup.sh: line 5: [: ==: unary operator expected

    环境 LNMP。python2.6,centos6.10 宝塔面板

    1. cilone
      @starixk

      有点明白了,这个脚本不能手动执行,$2、$3参数是aria2传过来的,我的可以自动上传了。

      1. Rat's
        @cilone

        还是得大佬自己研究才行。

    2. cilone
      @starixk

      同此问题,请问如何解决了?

    3. Rat's
      @starixk

      你直接用我那个一键脚本吧https://www.moerats.com/archives/693/。

      1. starixk
        @Rat's

        难受。。。我主机有网络环境的。。。而且还是centos

        1. Rat's
          @starixk

          没事,我那个脚本2分钟就安装好了,很快。

          1. starixk
            @Rat's

            郁闷的是,用你那个脚本安装的话,之前的网站啊之类的需要我重新配置一遍。。。感觉超级麻烦唉。。。

            1. Rat's
              @starixk

              脚本需要纯净的系统,也就是没安装过web环境的系统,不然会有冲突。

              1. starixk
                @Rat's

                我还是好奇这个bash 错误/root/.aria2/oneindexup.sh: line 5: [: -eq: unary operator expected
                这个错误为啥会出现

                1. Rat's
                  @starixk

                  你可以理解成语法的问题。百度很多,你可以自己看看,基本就是改单双等号,或加中括号解决。

  39. 小志

    已经认证成功但是上传就提示
    An error has occurred while uploading '/root/autoupload.sh' (Code: 000)

    1. Rat's
      @小志

      这个好像使用自己创建的应用会出现的问题,如果是的,你就用我给的默认参数。

  40. 小志

    downloadpath='/home' #下载目录
    这个必须加目录必须加HOMe吗

    1. Rat's
      @小志

      可以不用是,这里只做个例子,不过最好是一级目录,目录名随意。

  41. John

    发现,用aria下载BT的时候,会一下多无用的文件图片之类的,然后就没法自动上传了,而直接下一个https://xxx.xxx.com.ddd.mp4之类的,就可以自动上传

  42. John

    我的Directory Lister站是a.xxx.com,然后在a.xxx.com下挂载了Onedrive, onedrive指定的文件夹/share,发现这个自动上传是直接传到onedrive根目录的,可以直接传到我指定的Share文件夹吗,这样又可以在线观看下载了

    1. Rat's
      @John

      指定目录是有规定的,不是想传哪个文件夹就哪个,所以我一般没说明,直接根目录。

      1. John
        @Rat's

        嗯嗯,谢博主!我其他目录有私人文件,想做个共享站来着,都转移了,放根目录了

        1. Rat's
          @John

          如果用的oneindex的话,是可以给文件夹加密的。

          1. John
            @Rat's

            嗯嗯,了解那个了,不过是在我部署好之后,懒得搞了,对了博主你这个https://down.moerats.com资源站用的什么?

            1. John
              @John

              Directory Lister吗?

              1. Rat's
                @John

                对的,教程在博客自行搜索。

  43. John

    感谢!搞定自动上传问题了!

    1. 小志
      @John

      怎么搞定的我的怎么不上传

  44. AA

    ./onedrive /root/1.txt
    An error has occurred while uploading '/root/1.txt' (Code: 000)

    一直这个错误

    1. Rat's
      @AA

      你用的自己申请的参数?

      1. AA
        @Rat's

        是的,跟教程里完全一样啊,密钥也没有出现+号,为什么呢。

        1. Rat's
          @AA

          出现+几率是随机的,你直接用默认的参数,我就是看见很多新申请的API有问题,就留了个默认的。

  45. 布丁

    我想问下 就是这个支持免费申请的edu 5T onedrive不 不会是要全局管理员帐号吧

    1. Rat's
      @布丁

      不要管理员账号,非个人账号就行。

  46. AA

    安装脚本没反应!
    wget --no-check-certificate -q -O /tmp/OneDrive.sh "https://raw.githubusercontent.com/iiiiiii1/OneDrive/master/OneDrive.sh" && chmod +x /tmp/OneDrive.sh && bash /tmp/OneDrive.sh

    1. Rat's
      @AA

      是这样的。

  47. CC

    报错
    /root/.aria2/oneindexup.sh: line 5: [: -eq: unary operator expected
    大佬求解答

    1. CC
      @CC

      一键脚本报错,./onedrive手动上传正常

      1. Rat's
        @CC

        脚本在我这测试正常的,你可以把脚本里的 -eq 改成 ==双等号。

  48. Adee

    怎么直接把文件夹内所有文件上传到ONEDRIVE呢?

    1. Rat's
      @Adee

      好像不能直接,要么手动,要么用for写个脚本。

  49. L

    登录
    抱歉,登录时遇到问题。

    AADSTS90014: The request body must contain the following parameter: 'client_id'.

    1. Rat's
      @L

      你重新下载脚本,就在前2到3分钟我修复了下脚本,使用rm -rf /usr/local/etc/OneDrive/*删除下。

  50. Quarter

    上传显示错误为 Previous code: 000,一直上传失败,看不懂错误是什么,请大佬指教

    1. Rat's
      @Quarter

      用的是脚本提供的参数还是自己的?

      1. Quarter
        @Rat's

        aria2.sh 脚本的log日志显示的是这个错,自己直接 onedrive -d /root/test,也是报这个错,看不懂这个错在哪里

        1. Rat's
          @Quarter

          抱歉,之前脚本里有个路径填错了,现在修复了,你重新下载脚本吧。

  51. 君柯

    好麻烦,头好大,为了小姐姐不值得。。。

    1. Rat's
      @君柯

      参数都已经提供了,就不麻烦了。

  52. KK

    没有权限

    1. Rat's
      @KK

      具体哪里没权限。

      1. KK
        @Rat's

        打开最后那个onedrive -a页面,就提示返回或者使用管理员账号。

        1. Rat's
          @KK

          这不需要管理员账号的,你重新安装脚本再试试,我修改了点东西。

          1. KK
            @Rat's

            Something went wrong, here is the API response:

            我已经把+改成了%2B

            1. Rat's
              @KK

              就用脚本默认的参数吧。

              1. KK
                @Rat's

                /usr/local/etc/OneDrive/onedrive-authorize: line 14: curl: command not found Something went wrong, here is the API response

                同样的问题,然后发现教程中少了一步,应该安装curl,然后解决了

                1. Rat's
                  @KK

                  这个失误,我测试的时候都自带curl就没太注意这个,这个是验证API必需的。

                  1. KK
                    @Rat's

                    博主,这个脚本是不是上传完了不自动删除?

                    1. Rat's
                      @KK

                      自动删除。

                      1. HG
                        @Rat's

                        改+跟不改都返回 Something went wrong 泪奔。。。

                        1. Rat's
                          @HG

                          这个就不是很清楚了,大概是细节问题,可以重来一次。